我必须检查文件夹结构中的文件,如下所示
|_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))发布于 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)
[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
2016https://stackoverflow.com/questions/65856315
复制相似问题