[질문] python multiprocessing 실행 후 shell prompt crash 문제
글쓴이: impsoft / 작성시간: 화, 2019/10/29 - 11:01오전
안녕하세요,
python multiprocessing 코드 실행 후 shell prompt print가 crash 되는 문제가 있어 질문 드립니다.
# -*- coding: utf-8 -*- import requests, json, sys, os, traceback, math, nmap, random from multiprocessing import Process, Manager import multiprocessing from requests.packages.urllib3.exceptions import InsecureRequestWarning requests.packages.urllib3.disable_warnings(InsecureRequestWarning) def discoverHost(): content = nmap.... f1.write(content) f1.close() pass subnetList = ['172.30.217.0/24','172.30.218.0/24','172.30.219.0/24','172.30.247.0/24','172.30.248.0/24','172.30.249.0/24'] portGroup = "22,135" argument = "-sS -T5 -open -O" procs = [] with Manager() as manager: serverList = manager.list() for subnetInfo in subnetList: proc = Process(target=discoverHost, args=(serverList, subnetInfo, portGroup, argument)) procs.append(proc) proc.start() for proc in procs: proc.join() for proc in procs: if proc.is_alive(): print ("Terminating %s" % proc) proc.terminate() f1 = open("/home/test/test.result", 'w+') f1.write(json.dumps(list(serverList), indent=4, sort_keys=True)) sys.stdout.flush() f1.close()
위 코드는 Nmap을 sequential하게 처리하기 위해 만든 python 코드입니다.
실행은 잘 되며 코드상 크게 문제가 없는 것 같은데 아래와 같이 간헐적으로 실행 후 stdin 버퍼가 터진듯이 아래와 같이 shell prompt가 한줄로 나옵니다.
root@test:~/workDir$ root@test:~/workDir$ root@test:~/workDir$ root@test:~/workDir$ root@test:~/workDir$
구글을 통해 파일포인터의 버퍼를 flush 해주라는 글을 보고 파일 write 시마다 flush를 해주는 코드를 삽입하였지만 여전히 shell prompt가 한줄로 나오고 있습니다.
해결 방법이 혹시 있을지 답변 부탁드리겠습니다!!
감사합니다.
Forums:
댓글 달기