python实现生成器结合进程池程序
时间: 2023-06-04 07:02:54 浏览: 61
可以使用Python中的multiprocessing模块结合生成器实现进程池程序。具体实现可以参考以下代码:
```python
import multiprocessing
def generator_func():
for i in range(10):
yield i
def worker_func(item):
print("Process", multiprocessing.current_process().name, "is working on item", item)
def main():
generator = generator_func()
pool = multiprocessing.Pool(processes=4)
for item in generator:
pool.apply_async(worker_func, (item,))
pool.close()
pool.join()
if __name__ == '__main__':
main()
```
在这个例子中,我们首先定义了一个生成器函数`generator_func()`生成一些数据。然后定义了一个工作函数`worker_func()`,它接收从生成器中生成的每个项目作为参数,并处理它。最后,在`main()`函数中,我们使用`multiprocessing.Pool()`创建一个具有4个进程的进程池,并将生成器中的每个项目发送到池中处理。
此时,进程池中最多会有4个进程同时运行,每个进程会接收到生成器中的一个项目作为参数,并分别处理它们。当所有项目都被处理完毕后,我们使用`pool.close()`和`pool.join()`关闭池并等待所有子进程结束。