def get_version_list(env):
list = []
#do some intensive work
return list
if __name__ == '__main__':
from multiprocessing import Pool
pool = Pool()
result1 = pool.apply_async(get_version_list, ['prod'])
result2 = pool.apply_async(get_version_list, ['uat'])
#etc, I have six environment to check.
alist = result1.get()
blist = result2.get()
理想情况下,我希望有一个包含我的六个环境的列表,并在该列表上循环以为每个环境调用我的函数(并行),然后联合所有返回的列表。联合列表不应多次包含值。
类似的东西(我知道那段代码不起作用,但它可以让你知道想做什么)
if __name__ == '__main__':
from multiprocessing import Pool
pool = Pool()
env = ['uat', 'prod', 'lt', 'lt2', 'cert', 'sin']
for e in env:
result = pool.apply_async(get_version_list, [e])
#Merging the lists of the 6 function calls (unique entries)
list = result.get()
有一种简单的方法吗?
答案 0 :(得分:1)
使用map_async
代替apply_async
。
pool = Pool()
env = ['uat', 'prod', 'lt', 'lt2', 'cert', 'sin']
x = pool.map_async(get_version_list, env)
现在x
将是结果列表。