[질문] python multiprocessing 실행 후 shell prompt crash 문제

impsoft의 이미지

안녕하세요,

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가 한줄로 나오고 있습니다.

해결 방법이 혹시 있을지 답변 부탁드리겠습니다!!

감사합니다.