0
Tangki와 Tangki2를 처리하기 위해 문자열을 보내고 각각 Outdata를 처리하기 위해 배열 데이터를 조금씩 보내도록 프로그램을 작성하려하지만 올바르게 작동하지 않는 것 같습니다. 그러나 나가 Outdata에 문을 무능하게 할 때 모두는 완벽하게 작동한다. 전혀 응답하지 않는 프로세스가 응답 (108)에 도달Python Multiprocessing Pipe hang
import os
from multiprocessing import Process, Pipe
from time import sleep
import cv2
def outdata(input1,input2):
while(1):
room=input1.recv()
room2=input2.recv()
def tangki(keran1,selang1): ##============tangki1
a=None
x,y,degree,tinggi=0,0,0,0
dout=[]
while(1):
frame=keran1.recv()
dout.append([x,y,degree,tinggi])
selang1.send(dout)
print ("received from: {}".format(frame))
def tangki2(keran3,selang2): ##=================tangki2
x,y,degree,tinggi=0,0,0,0
dout2=[]
while(1):
frame=keran3.recv()
dout2.append([x,y,degree,tinggi])
selang2.send(dout2)
print("received from: {}".format(frame))
def pompa(gate1,gate2):
count=0
while(1):
count+=1
gate1.send("gate 1, val{}".format(count))
gate2.send("gate 2, val{}".format(count))
if __name__ == '__main__':
pipa1, pipa2 = Pipe()
pipa3, pipa4 = Pipe()
tx1,rx1 = Pipe()
tx2,rx2 = Pipe()
ptangki = Process(target=tangki, args=(pipa2, tx1))
ptangki2 = Process (target=tangki2, args=(pipa4, tx2))
ppompa = Process(target=pompa, args=(pipa1,pipa3))
keran = Process(target=outdata, args=(rx1,rx2))
ptangki.start()
ptangki2.start()
ppompa.start()
keran.start()
ptangki.join()
ptangki2.join()
ppompa.join()
keran.join()
정확한 카운트에서 :
이
은 예제 코드입니다. 내가 TOP, python3 프로세스가 사라 졌을 때 selang1과 selang2가 문제를 일으키는 것 같습니다. Google에서 검색했는데 파이프 교착 상태 일 수 있습니다. 그래서 질문은 input1과 input2 모두에서 반복적으로 읽음으로써 파이프의 모든 데이터를 이미 덤프했기 때문에 발생하지 않도록하는 방법입니다.편집 :는 유일한 문제는 tangki와 tangki2 간의 통신이 실제로 때문에 버퍼 크기 제한의