用并行法代替顺序循环 [英] Using parallel method instead of sequential loop
本文介绍了用并行法代替顺序循环的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我的代码中已经使用了循环,我想用多线程替换循环,但不能理解如何做。下面是代码。
def run_test_function(arg1,arg2, arg3, arg4, arg5):
try:
#loop1
for x in arg1:
#loop2
for y in arg2:
#loop3
for z in range(len(arg3)):
#statements
#statements
#statements
except Exception as e:
print(e)
def main(argv):
arg1 = value1
arg2 = value2
arg3 = value3
arg4 = value4
run_test_function(arg1, arg2, arg3, arg4)
我希望loop1的每一次迭代都应该像线程一样工作,这样我就可以用多线程取代loop。提前对您的帮助表示赞赏和感谢。:)
推荐答案
并行打印x
和y
(如您在评论中所说):
from itertools import product
from multiprocessing import Pool
def run_test_function(arg1, arg2):
with Pool(4) as pool:
pool.starmap(print, product(arg1, arg2), 5)
if __name__ == '__main__':
run_test_function([1,2,3,4,5], "abc")
itertools.product
模仿嵌套循环multiprocessing.Pool
提供并行Pool.starmap
使用Pool
执行函数
输出:
~/test $ python so.py
1 a
1 b
1 c
2 a
2 b
2 c
3 a
3 b
3 c
4 a
4 b
4 c
5 a
5 b
5 c
6 a
6 b
6 c
7 a
7 b
7 c
这篇关于用并行法代替顺序循环的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文