繁体   English   中英

如何在python中使用function中的多线程

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM