我有10个包含百万条记录的CSV文件。我想并行读取10个文件,但具有特定的速率(每5秒10条记录)。这样做的有效方法是什么?我正在使用Windows以防有人建议使用OS调度程序
答案 0 :(得分:2)
我会尝试joblib 这是一些未经测试的示例代码......
from joblib import Parallel, delayed
import time
#make a function that takes ONE filename and processes it the way you want
def process_csv(filename):
count = 0
#open file using method of choice plain file or csv
f = open(filename)
for line in f:
#do we ignore header?
if count == 0:
count += 1
continue
arr = line.strip().split(',')#use csv module if not simple text
#do something, store it, whatever
if count % 10 == 0:
time.sleep(5)
return 1
if __name__ == '__main__': #windows-only protection
filenames = ['file1', 'file2', ..., 'file10']
dummy = Parallel(n_jobs=10)(delayed(process_csv)(fn) for fn in filenames)
现在,注意是否有人在阅读这些文件时添加这些文件...此代码可能无法正常工作。
答案 1 :(得分:0)