0
여기에 수십 개의 "Python 하위 프로세스 정지"기사를 읽었으며 아래 코드의 여러 기사에있는 모든 문제를 해결했다고 생각합니다.출력 파이핑시 Python 하위 프로세스가 Popen으로 중단됩니다.
간헐적으로 Popen 명령에 내 코드가 멈 춥니 다. multiprocessing.dummy.apply_async를 사용하여 4 개의 스레드를 실행 중이며 각 스레드는 서브 프로세스를 시작한 다음 출력을 한 줄씩 읽고 stdout에 수정 된 버전을 인쇄합니다.
def my_subproc():
exec_command = ['stdbuf', '-i0', '-o0', '-e0',
sys.executable, '-u',
os.path.dirname(os.path.realpath(__file__)) + '/myscript.py']
proc = subprocess.Popen(exec_command, env=env, stdout=subprocess.PIPE, stderr=subprocess.STDOUT, bufsize=1)
print "DEBUG1", device
for line in iter(proc.stdout.readline, b''):
with print_lock:
for l in textwrap.wrap(line.rstrip(), LINE_WRAP_DEFAULT):
위 apply_async에서 실행되는 코드 :
pool = multiprocessing.dummy.Pool(4)
for i in range(0,4):
pool.apply_async(my_subproc)
가 간헐적으로 하위 프로세스가
subprocess.Popen
에서 중단됩니다는 문 "DEBUG1"는 인쇄되지 않습니다. 때로는 모든 스레드가 작동하며 때로는 4 개 중 1 개만 작동합니다.
Popen에 대해 알려진 교착 상태가 있음을 알 수 없습니다. 내가 잘못?