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()
粗略地說,就是我從上面的代碼想到的是這樣的:
>>>
4
8
16
20
而是空閒給了我這樣的輸出:
>>>
1
2
3
4
5
直到它達到20爲止。 有沒有任何命令來清除緩衝區?或類似的東西?
謝謝你提前。
因此,我應該使用poll()來清除管道。但這怎麼可能?當poll()變成False時?我的意思是它應該是在20年底的權利?或者我在這裏錯過了什麼?它的工作很明顯,但我只是很困惑如何工作。謝謝 – aji
@aji'poll'檢查管道中是否還有可以接收的元素,所以你可以把它理解爲'has_elements'。如果'poll'變爲false,則停止while循環。清空管道是通過重複「recv」來完成的。 – hansaplast