2017-08-08 85 views
1

我必須在python中寫一個簡單的tcp轉發器,它將永遠運行。我將以1分鐘的間隔獲取數據。那麼,我必須在while true中運行socket.read()嗎? 有沒有更好的方法來避免所有這些不必要的CPU週期? 還有一件事,socket.read()在一個線程中。python3套接字讀取,避免雖然真或最佳做法

回答

2

我是否必須運行socket.read()in while true?有沒有更好的方法來避免所有這些不必要的CPU週期?

這是一個阻止read()。所以你的進程(線程)在等待下一次網絡通信時基本上處於睡眠狀態,而不是消耗CPU週期。

+0

這是正確的。 – Jordan

+0

謝謝你的澄清 –

0

在一天結束的時候,你仍然需要某種真實的。通常的做法是在某個地方睡覺。

如果您需要從多個套接字中讀取數據,則需要使用select功能。 https://docs.python.org/3/library/select.html。這是因爲read()操作可能會阻塞。