[英]How to use multithreading in a function in python
由于 for 循环,我有一个循环需要 21 分钟才能运行。 这不是复杂的循环,但我需要迭代很多次。
我的代码看起来像这样
results=[]
for i in range(len(files)) ### around 5000 files with 96 rows each that evaluates
results_f= function(arg1[i], arg2)
results= results.append(results_f)
那么如何使用多线程实现呢?
我试过类似的东西
with concurrent.futures.ThreadPoolExecutor() as executor:
for i in range(len(files)):
results = executor.map(function, [arg1[i],arg2])
我看到在某处工作,但它根本不工作
不确定它会帮助你,但这是我自己想出的。
首先 executor.map(funct, *iterable, ...) 将可迭代对象作为输入。 这意味着您需要传递给具有与 arguments 相同的 len() 的列表,因为它将此迭代分成块并将它们作为 arguments 传递给 function。第一个迭代将是每次调用 function 的第一个参数,第二个将是第二个 = ).
其次,由于它将输入分成块,因此您可以摆脱 for 循环。
最后,它将返回生成器。 用它做什么由你自己决定。
with ThreadPoolExecutor(max_workers=4) as executor:
results = executor.map(function_name, arg1, [arg2 for i in range(len(arg1)))
list(results)
链接到文档。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.