【发布时间】:2018-12-27 15:55:30
【问题描述】:
我以前可以通过这种方式运行 100 个并行进程:
from multiprocessing import Process
def run_in_parallel(some_list):
proc = []
for list_element in some_list:
time.sleep(20)
p = Process(target=main, args=(list_element,))
p.start()
proc.append(p)
for p in proc:
p.join()
run_in_parallel(some_list)
但现在我的输入有点复杂,我得到了“那个”泡菜错误。我不得不转向悲怆。
我的代码的以下最小示例运行良好,但似乎受到线程数的限制。我怎样才能让悲伤扩展到 100 个并行进程?我的cpu只有4个核心。我的进程大部分时间都处于空闲状态,但它们必须运行数天。我不介意在初始化时使用“time.sleep(20)”。
from pathos.multiprocessing import ProcessingPool as Pool
input = zip(itertools.repeat((variable1, variable2, class1), len(some_list)), some_list)
p = Pool()
p.map(main, input)
编辑: 理想情况下,我想做 p = Pool(nodes=len(some_list)),这当然行不通。
【问题讨论】:
标签: python parallel-processing pathos