그래서 지금 저는 csv 파일을 읽고 뭔가를 한 다음 다른 csv 파일에 저장하는 파이썬 코드를 작업하고 있습니다. 처리 할 대용량 CSV 파일이 5000 개가 넘습니다.
시간을 절약하기 위해 동시에 최소 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()
파이썬 다중 프로세스 또는 스레드에 대한 지식이 거의 없으며 올바른 패키지를 사용하고 있는지 여부를 모르겠습니다.
도와주세요, 감사합니다!
(또한 나는 이것을 우분투 vm에서 실행하고 있으므로 셸 스크립트가 같은 일을 할 수 있고 더 빠른지 궁금합니다)
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)
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다