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. Show
Nội dung chí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ânCá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
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ânVí 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.
Bốn nhiệm vụ sau đó được cấp cho nhóm để thực hiện.
Đọ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.
Đọ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 Ví dụ về việc khởi tạo các quy trình công nhânVí 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.
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.
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.
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: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. # 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
# 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ânnhiệ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:
nhiệm vụ def ():
Tying này lại với nhau, ví dụ hoàn chỉnh được liệt kê dưới đây.
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
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ụ:
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:
Ví dụ hoàn chỉnh được liệt kê dưới đây.
& 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;Chạy ví dụ đầu tiên xác định trạng thái toàn cầu.
Khởi tạo công nhân với: Nhà nước toàn cầuCông nhân thực hiện với: Nhà nước toàn cầu Đọc thêm 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. |