멀티 프로세싱 사용 후 나오지 않는 것은 그래서 난 그냥 멀티 간단한 코드를 작성 내가이 명령을 실행할 때, 수영장() 및 큐()과는 이제까지파이썬 스크립트
python3 m.py
내가 볼 수있는 오픈 계속 내 Cpu 코어 중 5 개가 작업을 끝내고 CPU 사용량이 정상으로 줄어들지 만 강철은 닫히지 않고 Ctrl + C를 눌러 종료해야합니다.
여기 내 코드입니다 :
from multiprocessing import Queue,Pool
import csv,json
from itertools import chain
def worker(line):
j_string = json.dumps(line)
worker.output_q.put(j_string)
def worker_init(output_q):
worker.output_q = output_q
f_open = open('khodro','rt')
f_csv = csv.reader(f_open)
output_q = Queue()
pool = Pool(5,worker_init,[output_q])
pool.imap(worker,chain(f_csv),1000)
raise SystemExit()
Windows를 사용하고 있습니까? 풀을 생성하기 전에'if __name __ == "__ main __"'을 추가해야합니다. –
우분투 16.04에 메신저, 내가이 추가하지만, 스크립트는 그냥 어떤 처리를하지 않고 닫히고, 왜 우리는 수영장을 만들기 전에 이것을 작성해야합니까? – ali
전체 스크립트를 붙여 넣었습니까? 'imap'은 블로킹을하지 않고 게시 한 스크립트는 5 개의 프로세스를 생성했지만 상위 프로세스는 즉시 종료되고 하위 프로세스도 종료됩니다. 마지막에'join()'을했거나'for el in pool.imap'에 의해 요소를 소비하지만 붙여 넣은 스크립트는 사용자가 설명하는 것을하지 않습니다 – hansaplast