python-3.x - 使用并行方法而不是顺序循环
问题描述
我有已经使用循环的代码,我想用多线程替换循环,但不明白该怎么做。下面是代码。
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
推荐阅读
- c - 声明多个指针
- javascript - 反应应用程序中的删除请求没有删除帖子
- python - 如何在熊猫中连接两列,但通过填充南值?
- sql-server - 是否可以在没有 XSD 文件的情况下通过 SSIS(Visual Studio)将 XML 文件(加载数据)推送到 SQL Server?
- pytorch - VGG 模型未在使用 Pytorch 的 CIFAR10 数据集上收敛
- azure-blob-storage - 如何使用 Azure Java azure-storage-blob SDK 设置内容类型
- javascript - 如何在文本中创建多个阴影(jquery)
- javascript - 输入类型单选数据值在尝试获取所有选定输入时仅显示一个
- python - 为轮廓和图例设置最小值/最大值
- javascript - 所以我试图在一个数组中获取我的 axios 响应,但我不知道该怎么做