并行处理大量任务



我有10,000个CSV文件,我必须在熊猫中打开,并使用PANDAS的某些功能操纵/转换,并将新输出保存到CSV。我可以使用并行过程(Windows)使工作更快吗?我尝试了以下内容,但没有运气:

import pandas pd
import multiprocessing
def proc_file(file):
    df = pd.read_csv(file)
    df = df.reample('1S', how='sum')
    df.to_csv('C:\newfile.csv')
if __name__ == '__main__':    
    files = ['C:\file1.csv', ... 'C:\file2.csv']
    for i in files:
        p = multiprocessing.Process(target=proc_file(i))
    p.start() 

我认为我对Python中的多处理没有很好的了解。

请确保以后也关闭池:

import multiprocessing
# Maximum number of cpus to use at a time
max_threads = multiprocessing.cpu_count() - 1
pool = multiprocessing.Pool(max_threads)
list_files = pool.map(func,list_of_csvs)
pool.close()
pool.join()

list_files可以包含一个列表,例如您可以从func()

返回更改的CSV的名称

也许是这样的东西:

p = multiprocessing.Pool()
p.map(prof_file, files)

对于此尺寸,您确实需要一个流程池,以便启动过程的成本被其工作所抵消。多处理。pool确实可以做到这一点:它将任务并行性(这是您正在做的)转换为任务并行性。

最新更新