我有大量必须以某种方式处理的元素。我知道它可以通过多处理处理来完成:
pr1 = Process(calculation_function, (args, ))
pr1.start()
pr1.join()
所以我可以创建让我们说 10 个进程并将除以 10 的参数传递给 args。然后工作就完成了。
但我不想手动创建它并手动计算它。相反,我想使用ProcessPoolExecutor,我这样做是这样的:
executor = ProcessPoolExecutor(max_workers=10)
executor.map(calculation, (list_to_process,))
计算是我完成这项工作的功能。
def calculation(list_to_process):
for element in list_to_process:
# .... doing the job
list_to_process 是我要处理的列表。
但是在运行这段代码之后,循环迭代只进行了一次。我以为
executor = ProcessPoolExecutor(max_workers=10)
executor.map(calculation, (list_to_process,))
与此相同 10 次:
pr1 = Process(calculation, (list_to_process, ))
pr1.start()
pr1.join()
但这似乎是错误的。
ProcessPoolExecutor如何实现真正的多处理?