我有100个csv文件,每个文件存储相同数量的列。我不是一次只读一个,而是想实现多处理。
为了表示,我创建了4个文件:Book1.csv,Book2.csv,Book3.csv,Book4.csv,它们在第A行第1行的每一个中存储数字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()
我从link获得了上述代码的想法。
但是上面的代码并没有产生我期望的结果:
1,2,3,4,5,1,2,3,4,5,1,2,3,4,5,1,2,3,4,5
编辑: 我想在单独的处理器中加载每个文件并组合文件内容。由于我有100个文件要加载和组合内容,所以我希望一次抓住4个文件(我的PC有4个处理器),这个过程会更快。
答案 0 :(得分:2)
尝试一下
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))