所以现在我正在编写一个python代码,它读取一个csv文件,做一些事情,然后保存在另一个csv文件中。我有超过5000个大型csv文件要处理。
我在考虑使用多进程包,同时运行至少200个文件,以帮助我节省时间。但是,它并没有像我一样同时运行多个线程,这是我的伪代码。
from multiprocessing import Process
def f(inputfile,outputfile):
open inputfile as reader
open outputfile as writer
#do sth
if __name__ == "__main__":
for a list of inputfile_names/outputfile_names:
p=Process(target=f,args=(input_names,output_names,))
p.start()
p.join()
我对python多进程或线程知之甚少,我不知道我是否正在使用正确的包或其他任何东西。
请帮帮我,谢谢!
(我也是在ubuntu vm上运行它,所以我想知道是否有任何shell脚本可以做同样的事情,哪个更快)
答案 0 :(得分:0)
将联接放在for循环之外,否则您在启动后立即加入每个进程
from multiprocessing import Process
from time import sleep
def f(inputfile,outputfile):
open inputfile as reader
open outputfile as writer
#do sth
if __name__ == "__main__":
processes = []
for a list of inputfile_names/outputfile_names:
p=Process(target=f,args=(input_names,output_names,))
p.start()
processes.append(p)
#sleep an increment of time until all processes are done
while len(p for p in processes if p.is_alive()) > 0:
sleep(0.1)