以特定采样率并行读取多个文件

时间:2015-06-23 02:38:02

标签: python file python-2.7

我有10个包含百万条记录的CSV文件。我想并行读取10个文件,但具有特定的速率(每5秒10条记录)。这样做的有效方法是什么?我正在使用Windows以防有人建议使用OS调度程序

2 个答案:

答案 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)

  1. 打开10个文件。
  2. 从每个文件中读取1条记录(或10条,问题不明确)。
  3. 使用这些记录。
  4. 等到当前的5秒间隔结束。
  5. 转到2.