python-如何将参数传递给"map_async"?



我的程序很简单:

def mult(name,title):
while True:
name = str(name)+str(title)
pool = multiprocessing.pool(processes=5)
pool.map_async(mult,?...?)
pool.join()

我的问题是如何传递"map_async(("中的多个参数。我试图将它们作为数组提供,例如"map_async(mult,['go'","'stop'](,但缺少参数会引发异常。

我想使用 map_async 将两个参数传递给函数"mult"。我该怎么做?

假设你使用的是Python 3,你可以使用starmap或starmap_async:

args = [("name", "title"), ("name2", "title2")]
def mult(name,title):
return str(name)+str(title)
pool = multiprocessing.Pool(processes=5)
result = pool.starmap(mult,args)
>> ['nametitle', 'name2title2']

看它运行

如果您确实想使用异步:

args = [("name", "title"), ("name2", "title2")]
def mult(name,title):
return str(name)+str(title)
pool = multiprocessing.Pool(processes=5)
map_result = pool.starmap_async(mult,args)
result = map_result.get(timeout = 2)
>> ['nametitle', 'name2title2']

看它运行

我更改了您的mult功能,因为它没有任何意义。它用while True开始一个无限循环,每个循环给name赋值,但该值永远不会返回。

目前还不清楚你希望的结果是什么,但希望这会让你走上正确的轨道。

starmap_async工作,但由于它访问相机,我的应用程序无法运行;为了简单起见,我在这个问题中过度简化了我的函数。我改用"Popen(("并设法运行该应用程序。非常感谢埃里克·怀特;星图是一个很棒的功能,我将来可能会使用。

相关内容

  • 没有找到相关文章