首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >这是向concurrent.futures.ThreadPoolExecutor发送多个参数的正确方式吗?

这是向concurrent.futures.ThreadPoolExecutor发送多个参数的正确方式吗?
EN

Stack Overflow用户
提问于 2021-01-23 06:17:36
回答 1查看 92关注 0票数 1

我必须检查文件夹结构中的文件,如下所示

代码语言:javascript
复制
|_HMR
| |__2015
| |__2016
| |__2017
|
|_TMR1
 |__2015
 |__2016
 |__2017

我经常这样调用我的函数,它运行得很好。

代码语言:javascript
复制
check_continuity('TMR1', 2015)
check_continuity('TMR1', 2016)
check_continuity('TMR1', 2017)
check_continuity('HMR', 2015)
check_continuity('HMR', 2016)
check_continuity('HMR', 2017)

但是我希望通过使用multiprocessing (concurrent.futures)来加快速度,所以这是向我的函数发送参数的正确方法。因为第一个论点只有两个变体,第二个变式有三个。我想要第一个论点运行三个不同的年份,然后第二个论点在三个不同的年份。

简而言之,我希望得到结果,就像我以前单独调用函数的方式一样,但速度更快的

我试着这样做,但看起来它缺少了几个组合

代码语言:javascript
复制
if __name__ == '__main__':
    with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
        print('creating ThreadPoolExecutor')
        start_scrape1 = executor.map(check_continuity, ('HMR', 'TMR1'), (2015, 2016, 2017))
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-01-23 06:38:11

你想要像你有像('HMR', 'TMR1')(2015, 2016, 2017)这样的论点吗?所以它是从第一个和第一个从秒中取一个,一个做('HMR', 2015)('TMR1', 2016),既然第一个已经用完了,它就完成了。

所以你想要提供的是('HMR','HMR','HMR','TMR1','TMR1','TMR1')(2015, 2016, 2017,2015, 2016, 2017)

代码语言:javascript
复制
[i for i in p for j in year]

实际上与

代码语言:javascript
复制
temp = []
for i in p:
    for j in year:
        temp.append(i)

这将给['HMR', 'HMR', 'HMR', 'TMR1', 'TMR1', 'TMR1']year*len(p)提供(2015, 2016, 2017,2015, 2016, 2017)

在这里,循环可以实现

代码语言:javascript
复制
def check_continuity(a,b):
    print(a,b)

with concurrent.futures.ThreadPoolExecutor(max_workers=20) as executor:
        print('creating ThreadPoolExecutor')
        p = ('HMR', 'TMR1')
        year = (2015, 2016, 2017)
        start_scrape1 = executor.map(check_continuity, [i for i in p for j in year], year*len(p))

输出

代码语言:javascript
复制
creating ThreadPoolExecutor
HMR 2015
HMR 2016
HMR 2017
TMR1 2015
TMR1TMR1 2017
 2016
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/65856315

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档