我必须检查像这样的文件夹结构中的文件
|_HMR
| |__2015
| |__2016
| |__2017
|
|_TMR1
|__2015
|__2016
|__2017
我使用这样调用我的函数,它工作得很好
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)来加快速度,所以这是向我的函数发送参数的正确方式吗?因为第一个参数只有两个变体,第二个参数有三个。我想让第一个参数运行三年,第二个参数运行三年。
简而言之,我希望得到的结果像我以前单独调用函数的方式,但更快
我试图这样做,但看起来它缺少几个组合
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))
您想要像你有像('HMR', 'TMR1')
,(2015, 2016, 2017)
这样的论点所以它从第一个中取出一个,从第二个中取出一个('HMR', 2015)
,('TMR1', 2016)
,因为第一个耗尽了,它完成了。
所以你要提供的是('HMR','HMR','HMR','TMR1','TMR1','TMR1')
和(2015, 2016, 2017,2015, 2016, 2017)
[i for i in p for j in year]
实际上与
相同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)
这里的循环适用于
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))
输出creating ThreadPoolExecutor
HMR 2015
HMR 2016
HMR 2017
TMR1 2015
TMR1TMR1 2017
2016