1
저는 읽기 시간이 아닌 값을 건너 뛰고 특정 시간에 X 값을 캡처하는 간단한 다중 처리 프로그램을 작성하려고했습니다. 대략다중 처리에서 다중 값을 읽는 Python
from multiprocessing import Process, Pipe
from time import sleep
def f(conn):
x=0
for i in xrange(0,20):
x+=1
sleep(0.1)
conn.send(x)
conn.close()
if __name__ == '__main__':
parent_conn, child_conn = Pipe()
p = Process(target=f, args=(child_conn,))
p.start()
for i in xrange(0,5):
print parent_conn.recv()
sleep(0.4)
p.join()
, 내가 위의 코드에서 기대하고있어 이것이다 : 이 코드입니다
>>>
1
2
3
4
5
:
>>>
4
8
16
20
하지만 대신 IDLE 나에게이 출력을 준 그리고 20 시까 지 계속됩니다. 버퍼 지우기 명령이 있습니까? 또는 비슷한 것?
미리 감사드립니다.
그래서 파이프를 지우려면 poll()을 사용해야합니다. 하지만 어떻게 가능할까요? poll()이 False 일 때? 내말은 20 시경 말야? 아니면 여기서 뭔가를 놓친거야? 그것은 분명히 효과가 있지만, 나는이 일이 어떻게 작동하는지 당황스럽게 생각합니다. 고맙습니다. – aji
@aji'poll'은 파이프에 아직 수신 할 수있는 요소가 있는지 확인하여'has_elements'로 이해할 수 있습니다. 'poll'이 false가되면 while 루프를 멈춘다. 반복되는'recv'로 파이프 비우기가 완료됩니다. – hansaplast