我有100个csv文件,每个文件存储相同数量的列。我不想一次阅读它们,而是想实现多重处理。
为了表示,我创建了4个文件:Book1.csv,Book2.csv,Book3.csv,Book4.csv,它们在第A列的第A列中分别存储数字1至5。
我正在尝试以下方法:
import pandas as pd
import multiprocessing
import numpy as np
def process(file):
return pd.read_csv(file)
if __name__ == '__main__':
loc = r'I:\Sims'
fname = [loc + '\Book1.csv', loc + '\Book2.csv', loc + '\Book3.csv', loc + '\Book4.csv']
p = multiprocessing.Pool()
for f in fname:
p.apply_async(process, [f])
p.close()
p.join()
我从链接中得到了上面的代码的想法。
但是上面的代码没有产生我期望的期望结果:
1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5
编辑:我想将每个文件加载到单独的处理器中并合并文件内容。由于我要加载和合并内容的文件数为100,因此我希望一次查找4个文件(我的PC有4个处理器)时可以加快处理速度。
试试这个
import pandas as pd
import multiprocessing
import numpy as np
def process(file):
return pd.read_csv(file)
if __name__ == '__main__':
loc = r'I:\Sims'
fname = [loc + '\Book1.csv', loc + '\Book2.csv', loc + '\Book3.csv', loc + '\Book4.csv']
with multiprocessing.pool(5) as p: #Create a pool of 5 workers
result = p.map(process, fname)
print(len(result))
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句