python多进程优化for循环_Python中for循环中的多进程处理和传递多个参数

本文探讨了如何在Python中优化多进程for循环,特别是在使用`Pool`时。强调了`map`和`apply_async`的使用区别,以及如何传递多个参数。建议使用`starmap`或包装函数来实现并行计算,同时提醒注意进程管理和结果顺序。
摘要由CSDN通过智能技术生成

正如您所怀疑的那样,您使用^{}是错误的,在很多方面。在map的要点是对iterable的所有元素调用函数。就像内置的^{}函数,但是是并行的。如果您想对单个呼叫排队,只需使用^{}。

对于您具体询问的问题:map采用单参数函数。如果您想要传递多个引数,您可以修改或包装您的函式以取得单一元组,而不是多个引数(我将在结尾展示这个),或只使用^{}。或者,如果您想使用apply_async,它接受一个多参数的函数,但是您传递apply_async一个参数元组,而不是单独的参数。

您需要对Pool实例调用map,而不是Pool类。您要做的类似于尝试从文件类型中read,而不是从某个打开的文件中读取。在

您尝试在每次迭代之后关闭并加入Pool。你不想在完成所有这些任务之前这样做,否则你的代码只会等待第一个完成,然后为第二个代码引发一个异常。在

因此,最小的改变是:if __name__ == '__main__':

pool = Pool()

for foo in range(3):

for bar in range(5):

for baz in range(4):

for foobar in range(10):

pool.apply_async(calculation, (foo, bar, foobar, baz))

pool.close()

pool.join()

请注意,我将所有内容都保存在if __name__ == '__main__':块中,包括新的Pool()构造函数。我不会在后面的示例中展示这一点,

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值