python - 如何并行执行具有不同参数的定义函数
问题描述
我有一个带有多个参数的函数。我需要一个代码块,它将与 3 组不同的参数并行执行我的函数,然后保持在那里直到所有进程都完成,然后再运行我的其他代码块。
我试过了,但结果不是我需要的。
import multiprocessing
from itertools import product
bs = []
def a(i):
for x in range(i):
print(i)
b = x + 1
bs.append(b)
return bs
if __name__ == '__main__':
i = range(4)
with multiprocessing.Pool(processes=3) as pool:
result = pool.starmap(a, product(i))
print(result)
结果:
1
2
2
3
3
3
[[], [1], [1, 1, 2], [1, 1, 2, 1, 2, 3]]
我已经阅读了人们使用Process
from 的线程multiprocessing
,.join()
但我对基于它们编写代码的理解还不够。
编辑:
我也试过这个并得到一个错误:
from multiprocessing import Process
bs = []
def a(i):
for x in range(i):
print(i)
b = x + 1
bs.append(b)
return bs
if __name__ == '__main__':
p1 = Process(target=a(2))
p1.start()
p2 = Process(target=a(3))
p2.start()
p1.join()
p2.join()
结果:
2
2
3
3
3
Process Process-1:
Traceback (most recent call last):
File "E:\Python38-32\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "E:\Python38-32\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
TypeError: 'list' object is not callable
Process Process-2:
Traceback (most recent call last):
File "E:\Python38-32\lib\multiprocessing\process.py", line 315, in _bootstrap
self.run()
File "E:\Python38-32\lib\multiprocessing\process.py", line 108, in run
self._target(*self._args, **self._kwargs)
TypeError: 'list' object is not callable
由于多处理有点复杂,你能帮我解决这个问题吗?谢谢你。
解决方案
推荐阅读
- c# - 纸牌游戏在一段时间内递增(c#)
- reactjs - OnsenUI Navigator + React 导航失败
- android - FAILURE:构建失败并出现异常。任务“:app:mergeDebugResources”执行失败
- jquery - 如何增加颜色的亮度 jQuery
- c++ - 如何从文件中读取并将字符串输入到vars?
- mongodb - 将对象数组中的 int 数组字段连接到 mongodb 聚合中的一个字符串字段中
- vba - 如何在 MS-Access 表单中预选 ListBox 中的值?
- react-native - 反应中的RGB功能
- python - AttributeError:“AutoShardedClient”对象没有属性“add_cog”
- c# - Ef Core 静态扩展查询