我想做这样的事情:
for entry in catalog:
do some operation
每个条目不一定具有相同的负载,但由于有数千个条目,我猜想将它们分解成,比如说,一千个或多或少会平衡一些事情。所以我想运行多个进程,每个进程都有一大块条目,以缩短我的整体运行时间。
我已经为其中的 100 个尝试了类似以下的操作:
from multiprocessing import Process
p1 = Process(target=myfunc, kwargs=dict(start=0, end=50))
p2 = Process(target=myfunc, kwargs=dict(start=50, end=100))
p1.start()
p2.start()
从脚本的日志来看,这两个进程似乎确实同时运行,但与串行处理所有 100 个进程相比,运行时间仅减少了 20%。这是可以预料的吗?有没有更好的方法来分解 python 中的大循环操作?