使用并行方法而不是顺序循环
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 的每次迭代都应该表现为一个线程,这样我就可以用多线程替换循环。感谢并提前感谢您的帮助。 :)
要并行打印 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
我的代码中已经使用了循环,我想用多线程替换循环,但无法理解该怎么做。下面是代码。
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 的每次迭代都应该表现为一个线程,这样我就可以用多线程替换循环。感谢并提前感谢您的帮助。 :)
要并行打印 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