Hướng dẫn python pool initializer - python pool khởi tạo

Bạn có thể khởi tạo công nhân trong nhóm quy trình bằng cách đặt đối số khởi tạo trên mạng trong bộ xử lý đa xử lý.pool.pool.initialize workers in the process pool by setting the “initializer” argument in the multiprocessing.pool.Pool class constructor.initialize workers in the process pool by setting the “initializer” argument in the multiprocessing.pool.Pool class constructor.

Nội dung chính

  • Cần khởi tạo các quy trình công nhân
  • Cách khởi tạo các quy trình công nhân
  • Ví dụ về việc khởi tạo các quy trình công nhân
  • # Nhiệm vụ được thực hiện trong một quy trình công nhân
  • Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.
  • Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.
  • Đa xử lý-song song dựa trên quy trình

Trong hướng dẫn này, bạn sẽ khám phá cách khởi tạo các quy trình của công nhân trong nhóm quy trình trong Python.initialize worker processes in the process pool in Python.initialize worker processes in the process pool in Python.

Bắt đầu nào.

  • Cần khởi tạo các quy trình công nhân
  • Cách khởi tạo các quy trình công nhân
  • Ví dụ về việc khởi tạo các quy trình công nhân
  • # Nhiệm vụ được thực hiện trong một quy trình công nhân
  • Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.
  • Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.
  • Đa xử lý-song song dựa trên quy trình

Cần khởi tạo các quy trình công nhân

Cách khởi tạo các quy trình công nhânmultiprocessing.pool.Pool in Python provides a pool of reusable processes for executing ad hoc tasks.

Ví dụ về việc khởi tạo các quy trình công nhân

# Nhiệm vụ được thực hiện trong một quy trình công nhân

Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.

Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.apply[] or we can apply the same function to an iterable of items using functions such as map[]. Results for issued tasks can then be retrieved synchronously, or we can retrieve the result of tasks later by using asynchronous versions of the functions such as apply_async[] and map_async[].

Đa xử lý-song song dựa trên quy trình

Trong hướng dẫn này, bạn sẽ khám phá cách khởi tạo các quy trình của công nhân trong nhóm quy trình trong Python.initialize worker processes in the process pool in Python.

Bắt đầu nào.

Ví dụ về tên luồng và quy trình khởi tạo

Cách khởi tạo các quy trình công nhân

Ví dụ về việc khởi tạo các quy trình công nhân

# Nhiệm vụ được thực hiện trong một quy trình công nhâninitializer” argument when configuring the process pool via the class constructor.

Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.initializer” is set to None.

Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.initializer” argument can be set to the name of a function that will be called to initialize the worker processes.

Đa xử lý-song song dựa trên quy trình

Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.

Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.

Đa xử lý-song song dựa trên quy trình

Trong hướng dẫn này, bạn sẽ khám phá cách khởi tạo các quy trình của công nhân trong nhóm quy trình trong Python.initialize worker processes in the process pool in Python.worker_init[]:

Bắt đầu nào.

Ví dụ về tên luồng và quy trình khởi tạo..

Ví dụ về việc truy cập một biến khởi tạo trong một công nhân

pool=multiprocessing.pool.Pool[initializer=worker_init]=multiprocessing.pool.Pool[initializer=worker_init]=multiprocessing.pool.Pool[initializer=worker_init]

Đọc thêminitargs” argument, which takes an ordered list or tuple of arguments for the custom initialization function.

Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.

Đa xử lý-song song dựa trên quy trình

Trong hướng dẫn này, bạn sẽ khám phá cách khởi tạo các quy trình của công nhân trong nhóm quy trình trong Python.initialize worker processes in the process pool in Python.worker_init[arg1,arg2,arg3]:

Bắt đầu nào.

Ví dụ về tên luồng và quy trình khởi tạo..

Ví dụ về việc truy cập một biến khởi tạo trong một công nhân

pool=multiprocessing.pool.Pool[initializer=worker_init,initargs=[arg1,arg2,arg3]]=multiprocessing.pool.Pool[initializer=worker_init,initargs=[arg1,arg2,arg3]]= multiprocessing.pool.Pool[initializer=worker_init,initargs=[arg1,arg2,arg3]]

Đọc thêm

Khi sử dụng nhóm quy trình, chúng ta có thể cần khởi tạo một biến, dữ liệu hoặc tài nguyên sẽ được sử dụng bởi mỗi quy trình của công nhân trên tất cả các nhiệm vụ được thực hiện bởi quy trình đó. Download my FREE PDF cheat sheet
Download my FREE PDF cheat sheet

Ví dụ về việc khởi tạo các quy trình công nhân

Ví dụ về tên luồng và quy trình khởi tạo

Ví dụ về việc truy cập một biến khởi tạo trong một công nhân

Đọc thêm

Takeaways

Multiprocessing.pool.pool in Python cung cấp một nhóm các quy trình có thể tái sử dụng để thực hiện các tác vụ ad hoc.task[] function below implements this.task[] function below implements this.

Một nhóm quy trình có thể được cấu hình khi nó được tạo, sẽ chuẩn bị cho nhân viên trẻ em.

Một đối tượng nhóm quy trình kiểm soát một nhóm các quy trình công nhân mà công việc có thể được gửi. Nó hỗ trợ kết quả không đồng bộ với thời gian chờ và gọi lại và có triển khai bản đồ song song.task[]:task[]:

-Đa xử lý-song song dựa trên quy trình# report a message# report a message

Chúng tôi có thể phát hành các tác vụ một lần cho nhóm quy trình bằng các hàm như Ứng dụng [] hoặc chúng tôi có thể áp dụng chức năng tương tự cho một mục có thể sử dụng các chức năng như MAP []. Kết quả cho các tác vụ được ban hành sau đó có thể được truy xuất đồng bộ hoặc chúng ta có thể truy xuất kết quả của các tác vụ sau đó bằng cách sử dụng các phiên bản không đồng bộ của các hàm như application_async [] và map_async [].print['Worker executing task...',flush=True]print['Worker executing task...',flush=True]

Khi sử dụng nhóm quy trình, chúng ta có thể cần khởi tạo một biến, dữ liệu hoặc tài nguyên sẽ được sử dụng bởi mỗi quy trình của công nhân trên tất cả các nhiệm vụ được thực hiện bởi quy trình đó.# block for a moment# block for a moment

    sleep[1]sleep[1]sleep[1]

Ví dụ, có lẽ mỗi quy trình được yêu cầu phải có tay cầm riêng để ghi nhật ký hoặc kết nối với máy chủ từ xa được giữ mở và sử dụng lại khi thực hiện các tác vụ.

Chúng tôi cần một cách gọi một chức năng để khởi tạo từng quy trình của công nhân trong nhóm quy trình, trước khi thực hiện bất kỳ nhiệm vụ nào.

Hàm khởi tạo_worker [] bên dưới thực hiện điều này.initialize_worker[] function below implements this.initialize_worker[] function below implements this.

# Khởi tạo một công nhân trong nhóm quy trình

def khởi tạo_worker []:initialize_worker[]:initialize_worker[]:

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một tin nhắn# report a message# report a message

& nbsp; & nbsp; & nbsp; & nbsp; in ['khởi tạo công nhân ...', flush = true]print['Initializing worker...',flush=True]print['Initializing worker...',flush=True]

Tiếp theo, chúng ta có thể tạo một nhóm quy trình và định cấu hình nó để sử dụng chức năng Sitchitize_worker [] của chúng tôi để khởi tạo từng quy trình của công nhân.initialize_worker[] function to initialize each worker process.initialize_worker[] function to initialize each worker process.

Chúng tôi sẽ tạo nhóm quy trình bằng giao diện Trình quản lý ngữ cảnh và định cấu hình nó để tạo hai quy trình công nhân.

.......

# Tạo và định cấu hình nhóm quy trình

với nhóm [2, khởi tạo = khởi tạo_worker] aspool:Pool[2,initializer=initialize_worker]aspool:Pool[2,initializer=initialize_worker]aspool:

# ...

Tiếp theo, chúng tôi sẽ phát hành bốn nhiệm vụ cho nhóm quy trình sẽ được thực hiện không đồng bộ. Chỉ có hai công nhân, vì vậy chỉ có hai nhiệm vụ sẽ được thực hiện tại một thời điểm.

.......

# Tạo và định cấu hình nhóm quy trình

for_inrange[4]:_inrange[4]:_inrange[4]:

    pool.apply_async[task]pool.apply_async[task]pool.apply_async[task]

với nhóm [2, khởi tạo = khởi tạo_worker] aspool:Pool[2,initializer=initialize_worker]aspool:

.......

# Tạo và định cấu hình nhóm quy trình

pool.close[].close[].close[]

với nhóm [2, khởi tạo = khởi tạo_worker] aspool:Pool[2,initializer=initialize_worker]aspool:

pool.join[].join[].join[]

# ...

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

Tiếp theo, chúng tôi sẽ phát hành bốn nhiệm vụ cho nhóm quy trình sẽ được thực hiện không đồng bộ. Chỉ có hai công nhân, vì vậy chỉ có hai nhiệm vụ sẽ được thực hiện tại một thời điểm.

với nhóm [2, khởi tạo = khởi tạo_worker] aspool:

# Phát hành nhiệm vụ cho nhóm quy trìnhtime import sleep

Cuối cùng, chúng tôi sẽ đóng cửa quy trình và chờ tất cả các nhiệm vụ hoàn thành.time import sleepmultiprocessing.pool import Pool

# Đóng nhóm quy trìnhmultiprocessing.pool import Pool

# Đợi tất cả các nhiệm vụ hoàn thànhtask[]:

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một tin nhắn# report a message# report a message

& nbsp; & nbsp; & nbsp; & nbsp; in ['khởi tạo công nhân ...', flush = true]print['Initializing worker...',flush=True]print['Worker executing task...',flush=True]

Tiếp theo, chúng ta có thể tạo một nhóm quy trình và định cấu hình nó để sử dụng chức năng Sitchitize_worker [] của chúng tôi để khởi tạo từng quy trình của công nhân.initialize_worker[] function to initialize each worker process.# block for a moment

    sleep[1]sleep[1]sleep[1]

# Khởi tạo một công nhân trong nhóm quy trình

def khởi tạo_worker []:initialize_worker[]:initialize_worker[]:

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một tin nhắn# report a message# report a message

& nbsp; & nbsp; & nbsp; & nbsp; in ['khởi tạo công nhân ...', flush = true]print['Initializing worker...',flush=True]print['Initializing worker...',flush=True]

Tiếp theo, chúng ta có thể tạo một nhóm quy trình và định cấu hình nó để sử dụng chức năng Sitchitize_worker [] của chúng tôi để khởi tạo từng quy trình của công nhân.

if__name__=='__main__':__name__=='__main__':__name__=='__main__':

Chúng tôi sẽ tạo nhóm quy trình bằng giao diện Trình quản lý ngữ cảnh và định cấu hình nó để tạo hai quy trình công nhân.# create and configure the process pool# create and configure the process pool

...with Pool[2,initializer=initialize_worker]aspool:with Pool[2,initializer=initialize_worker]aspool:

# Tạo và định cấu hình nhóm quy trình# issue tasks to the process pool# issue tasks to the process pool

        for_inrange[4]:for_inrange[4]:for_inrange[4]:

            pool.apply_async[task]pool.apply_async[task]pool.apply_async[task]

với nhóm [2, khởi tạo = khởi tạo_worker] aspool:# close the process pool# close the process pool

        pool.close[]pool.close[]pool.close[]

# ...# wait for all tasks to complete# wait for all tasks to complete

        pool.join[]pool.join[]pool.join[]

Tiếp theo, chúng tôi sẽ phát hành bốn nhiệm vụ cho nhóm quy trình sẽ được thực hiện không đồng bộ. Chỉ có hai công nhân, vì vậy chỉ có hai nhiệm vụ sẽ được thực hiện tại một thời điểm.

# Phát hành nhiệm vụ cho nhóm quy trình

Cuối cùng, chúng tôi sẽ đóng cửa quy trình và chờ tất cả các nhiệm vụ hoàn thành.

# Đóng nhóm quy trình

# Đợi tất cả các nhiệm vụ hoàn thành

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

# Đợi tất cả các nhiệm vụ hoàn thành

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

# SuperfastPython.com

# Ví dụ về việc khởi tạo các quy trình công nhân trong nhóm quy trình

từ thời gian nhập vào giấc ngủ

từ đa bộ xử lý.pool Pool 
 

# Nhiệm vụ được thực hiện trong một quy trình công nhân

nhiệm vụ def []:

& nbsp; & nbsp; & nbsp; & nbsp; in ['nhiệm vụ thực thi công nhân ...', flush = true]

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây lát

# Bảo vệ điểm vàomultiprocessing.current_process[] and threading.current_thread[] functions.multiprocessing.current_process[] and threading.current_thread[] functions.

& nbsp; & nbsp; & nbsp; & nbsp;# tạo và định cấu hình nhóm quy trình

& nbsp; & nbsp; & nbsp; & nbsp; với pool [2, khởi tạo = khởi tạo_worker] aspool:

# Đợi tất cả các nhiệm vụ hoàn thành

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.task[]:

# SuperfastPython.com# get the current process

    process=current_process[]process=current_process[]process=current_process[]

# Ví dụ về việc khởi tạo các quy trình công nhân trong nhóm quy trình# get the current thread

    thread=current_thread[]thread=current_thread[]thread=current_thread[]

từ thời gian nhập vào giấc ngủ# report a message

từ đa bộ xử lý.pool Pool print[f'Worker executing task, process={process.name}, thread={thread.name}',flush=True]

# Nhiệm vụ được thực hiện trong một quy trình công nhân# block for a moment

    sleep[1]sleep[1]sleep[1]

nhiệm vụ def []:

& nbsp; & nbsp; & nbsp; & nbsp; in ['nhiệm vụ thực thi công nhân ...', flush = true]

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây látinitialize_worker[]:

# Bảo vệ điểm vàomultiprocessing.current_process[] and threading.current_thread[] functions.# get the current process

    process=current_process[]process=current_process[]process=current_process[]

& nbsp; & nbsp; & nbsp; & nbsp;# tạo và định cấu hình nhóm quy trình# get the current thread

    thread=current_thread[]thread=current_thread[]thread=current_thread[]

từ thời gian nhập vào giấc ngủ# report a message

từ đa bộ xử lý.pool Pool print[f'Initializing worker, process={process.name}, thread={thread.name}',flush=True]

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

37

38

# SuperfastPython.com

# Ví dụ về việc khởi tạo các quy trình công nhân trong nhóm quy trình

từ thời gian nhập vào giấc ngủtime import sleep

từ đa bộ xử lý.pool Pool multiprocessing.pool import Pool

# Nhiệm vụ được thực hiện trong một quy trình công nhânmultiprocessing import current_process

nhiệm vụ def []:threading import current_thread

# Nhiệm vụ được thực hiện trong một quy trình công nhân

nhiệm vụ def []:task[]:

# Bảo vệ điểm vàomultiprocessing.current_process[] and threading.current_thread[] functions.# get the current process

    process=current_process[]process=current_process[]process=current_process[]

& nbsp; & nbsp; & nbsp; & nbsp;# tạo và định cấu hình nhóm quy trình# get the current thread

    thread=current_thread[]thread=current_thread[]thread=current_thread[]

từ thời gian nhập vào giấc ngủ# report a message

từ đa bộ xử lý.pool Pool print[f'Worker executing task, process={process.name}, thread={thread.name}',flush=True]

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây lát# block for a moment# block for a moment

    sleep[1]sleep[1]sleep[1]

# Khởi tạo một công nhân trong nhóm quy trình

def khởi tạo_worker []:initialize_worker[]:initialize_worker[]:

& nbsp; & nbsp; & nbsp; & nbsp;# Nhận quy trình hiện tại# get the current process# get the current process

    process=current_process[]process=current_process[]process=current_process[]

& nbsp; & nbsp; & nbsp; & nbsp;# Nhận luồng hiện tại# get the current thread# get the current thread

    thread=current_thread[]thread=current_thread[]thread=current_thread[]

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một tin nhắn# report a message# report a message

& nbsp;print[f'Initializing worker, process={process.name}, thread={thread.name}',flush=True]print[f'Initializing worker, process={process.name}, thread={thread.name}',flush=True]

Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.

if__name__=='__main__':__name__=='__main__':__name__=='__main__':

# SuperfastPython.com# create and configure the process pool# create and configure the process pool

# Ví dụ về việc khởi tạo công nhân trong nhóm quy trình và các chủ đề và quy trình báo cáowith Pool[2,initializer=initialize_worker]aspool:with Pool[2,initializer=initialize_worker]aspool:

từ thời gian nhập vào giấc ngủ# issue tasks to the process pool# issue tasks to the process pool

        for_inrange[4]:for_inrange[4]:for_in range[4]:

            pool.apply_async[task]pool.apply_async[task]pool.apply_async[task]

từ đa bộ xử lý.pool Pool# close the process pool# close the process pool

        pool.close[]pool.close[]pool.close[]

Từ đa xử lý nhập khẩu current_process# wait for all tasks to complete# wait for all tasks to complete

        pool.join[]pool.join[]pool.join[]

Từ việc nhập luồng current_thread

# Nhiệm vụ được thực hiện trong một quy trình công nhân

nhiệm vụ def []:

& nbsp; & nbsp; & nbsp; & nbsp; print [f'worker thực thi nhiệm vụ, process = {process.name}, thread = {thread.name} ', flush = true]

# Bảo vệ điểm vàoSpawnPoolWorker-1” and executes both the initialization function and the task function in the main thread named “MainThread” of the process.SpawnPoolWorker-1” and executes both the initialization function and the task function in the main thread named “MainThread” of the process.

& nbsp; & nbsp; & nbsp; & nbsp;# tạo và định cấu hình nhóm quy trình

& nbsp; & nbsp; & nbsp; & nbsp; với pool [2, khởi tạo = khởi tạo_worker] aspool:

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Chạy ví dụ tạo nhóm luồng và định cấu hình nó để các quy trình công nhân được khởi tạo bằng cách sử dụng chức năng tùy chỉnh của chúng tôi, như trước đây.

Bốn nhiệm vụ được cấp cho nhóm quy trình và quy trình chính chờ tất cả các nhiệm vụ hoàn thành.Pool initializer function is initialize a variable that is made available to the worker.Pool initializer function is initialize a variable that is made available to the worker.

Tên của quy trình và luồng công nhân trong quy trình được báo cáo cả khi khởi tạo công nhân và thực hiện nhiệm vụ.

Thật thú vị, chúng ta có thể thấy rằng quá trình thực thi nhiệm vụ được sử dụng để khởi tạo công nhân và cùng một luồng được sử dụng trong từng trường hợp.

Ví dụ: quy trình công nhân đầu tiên có tên là Spawnpoolworker-1 và thực thi cả chức năng khởi tạo và chức năng tác vụ trong luồng chính có tên là Main MainThread của quy trình.

Điều này nhấn mạnh rằng chúng ta có thể sử dụng các cơ chế như các biến toàn cầu và lưu trữ địa phương trong các quy trình công nhân để chia sẻ dữ liệu trên các nhiệm vụ được thực hiện bởi một quy trình công nhân.

Khởi tạo công nhân, Process = SpawnPoolWorker-1, Thread = MainThread

Ví dụ:

Def Custom_init []:custom_init[]:custom_init[]:

# Xác định một biến toàn cầu trong quá trình này

Globaldatadatadata

# gán dữ liệu cho biến toàn cầu

data=100=100=100

Bây giờ chúng ta đã biết cách chia sẻ một biến khởi tạo với một công nhân, hãy để Lôi nhìn vào một ví dụ đã làm việc.

Trong ví dụ này, chúng tôi sẽ chuyển một đối tượng cho chức năng khởi tạo và lưu trữ nó trong một biến toàn cầu trong quy trình công nhân. Điều này sẽ làm cho nó có sẵn cho tất cả các quy trình công nhân.

Đây là cách tiếp cận để chia sẻ một đối tượng đa xử lý với tất cả các công nhân để ngăn chặn họ một cách duyên dáng như trong hướng dẫn này:multiprocessing.Event object with all workers in order to stop them gracefully as seen in this tutorial:multiprocessing.Event object with all workers in order to stop them gracefully as seen in this tutorial:

  • Đa xử lý nhóm dừng tất cả các nhiệm vụ nếu một nhiệm vụ thất bại trong Python

Ví dụ hoàn chỉnh được liệt kê dưới đây.

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

25

26

27

28

29

30

31

32

33

34

35

36

# SuperfastPython.com

# Ví dụ về việc chia sẻ dữ liệu với tất cả các công nhân thông qua trình khởi tạo

từ thời gian nhập vào giấc ngủtime import sleeptime import sleep

từ đa bộ xử lý.pool Poolmultiprocessing.pool import Poolmultiprocessing.pool import Pool

# Nhiệm vụ được thực hiện trong một quy trình công nhân

nhiệm vụ def []:task[]:task[]:

& nbsp; & nbsp; & nbsp; & nbsp;# khai báo biến toàn cầu# declare global variable# declare global variable

    globalcustom_dataglobalcustom_dataglobalcustom_data

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một thông báo với biến toàn cầu# report a message with global variable# report a message with global variable

& nbsp;print[f'Worker executing with: {custom_data}',flush=True]print[f'Worker executing with: {custom_data}',flush=True]

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây lát# block for a moment# block for a moment

    sleep[1]sleep[1]sleep[1]

# Khởi tạo một công nhân trong nhóm quy trình

def worker_init [tùy chỉnh]:worker_init[custom]:worker_init[custom]:

& nbsp; & nbsp; & nbsp; & nbsp;# khai báo biến toàn cầu# declare global variable# declare global variable

    globalcustom_dataglobalcustom_dataglobalcustom_data

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một thông báo với biến toàn cầu# report a message with global variable# assign the global variable

    custom_data=customcustom_data=customcustom_data=custom

& nbsp;print[f'Worker executing with: {custom_data}',flush=True]# report a message

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây lát# block for a momentprint[f'Initializing worker with: {custom_data}', flush=True]

# Khởi tạo một công nhân trong nhóm quy trình

if__name__=='__main__':__name__=='__main__':__name__=='__main__':

def worker_init [tùy chỉnh]:worker_init[custom]:# define data to share with all workers

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một thông báo với biến toàn cầu# assign the global variabledata='Global State'

& nbsp;# report a message# create and configure the process pool

& nbsp; & nbsp; & nbsp; & nbsp;# block trong giây látprint[f'Initializing worker with: {custom_data}',flush=True]with Pool[2,initializer=worker_init,initargs=[data,]]aspool:

def worker_init [tùy chỉnh]:# define data to share with all workers# issue tasks to the process pool

        for_inrange[4]:for_inrange[4]:for_inrange[4]:

            pool.apply_async[task]pool.apply_async[task]pool.apply_async[task]

& nbsp; & nbsp; & nbsp; & nbsp;# gán biến toàn cầudata='Global State'# close the process pool

        pool.close[]pool.close[]pool.close[]

& nbsp; & nbsp; & nbsp; & nbsp;# báo cáo một tin nhắn# create and configure the process pool# wait for all tasks to complete

        pool.join[]pool.join[]pool.join[]

& nbsp;with Pool[2,initializer=worker_init,initargs=[data,]]aspool:

# Bảo vệ điểm vào# issue tasks to the process pool

& nbsp; & nbsp; & nbsp; & nbsp;# xác định dữ liệu để chia sẻ với tất cả các công nhân# close the process pool

& nbsp; & nbsp; & nbsp; & nbsp; data = 'Global State'# wait for all tasks to complete

& nbsp; & nbsp; & nbsp; & nbsp; data = 'Global State'# wait for all tasks to complete

& nbsp; & nbsp; & nbsp; & nbsp;# tạo và định cấu hình nhóm quy trình

& nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp;

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;# vấn đề

& nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp; & nbsp;

Chạy ví dụ đầu tiên xác định trạng thái toàn cầu.

  • Tiếp theo, nhóm được tạo và cấu hình với hai công nhân, và chức năng và trạng thái trình khởi tạo công nhân tùy chỉnh như một đối số.
  • Mỗi tác phẩm được khởi tạo, khai báo một biến toàn cầu, lưu trữ dữ liệu trong biến toàn cầu, sau đó báo cáo giá trị.
  • Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.
  • Mỗi công nhân thực hiện nhiệm vụ, báo cáo giá trị của bản sao của chính dữ liệu được chia sẻ.
  • Ví dụ nêu bật cách một biến có thể được xác định trong trình khởi tạo và được sử dụng trong công nhân và cách chúng tôi có thể chia sẻ dữ liệu từ quy trình chính với mỗi công nhân mà không chuyển nó như một đối số cho chức năng tác vụ.

Khởi tạo công nhân với: Nhà nước toàn cầu

Công nhân thực hiện với: Nhà nước toàn cầu

Đọc thêm
Ask your questions in the comments below and I will do my best to answer.

Phần này cung cấp các tài nguyên bổ sung mà bạn có thể thấy hữu ích.

Bài Viết Liên Quan

Chủ Đề