我有几百个输入文件需要传递给函数来计算一些数字,并将它们写入输出文件。该函数不返回任何值。所以,每个函数调用都是独立的。多线程/并行处理
而不是串行调用函数,我尝试了多处理,并且性能(执行时间)并不好多了。任何关于提高性能的建议都是有价值的。甚至是多处理方式去解决这个问题?
import multiprocessing as mp
NumProcess = 4
def Analysis(InputFile):
#do some calcs
#Write results to output file
#return nothing
FileList = ['InputFile1.csv','InputFile2.csv','InputFile3.csv',....]
pool = mp.Pool(processes=NumProcess)
temp = [pool.apply_async(Analysis, args=(File) for File in FileList]
output = [p.get() for p in temp]
pool.close()
是 - 多是正确的,有简单的方法。也许你的瓶颈在别的地方。如果你至少有两个cpu核心,这应该会更好。 – jsbueno
在这个清单中有一个开放parentheresis太多,虽然 – jsbueno
您的算法CPU绑定或I/O绑定?如果它是I/O绑定的,那么产生多个线程/进程将不会使它变得更快,并且如果它导致硬盘驱动器的头部不得不来回寻找更多,线程/单进程案例。 –