我已經編寫了一個程序,可以使用asyncore模塊同時與許多服務器通信。大多數情況下,我只是響應從服務器收到的數據,但偶爾我需要發送一些「不同步」的數據。默認的30秒超時在數據包發送之前有明顯的延遲,所以爲了提高響應速度,我將超時降低到了0.1。超時時間很短的Python asyncore
我的問題是:在這樣低的值下使用超時是否是一個好主意?如果不是,是否還有另一種更高效的完成同樣事情的方法?這樣做的最佳做法是什麼?
我已經編寫了一個程序,可以使用asyncore模塊同時與許多服務器通信。大多數情況下,我只是響應從服務器收到的數據,但偶爾我需要發送一些「不同步」的數據。默認的30秒超時在數據包發送之前有明顯的延遲,所以爲了提高響應速度,我將超時降低到了0.1。超時時間很短的Python asyncore
我的問題是:在這樣低的值下使用超時是否是一個好主意?如果不是,是否還有另一種更高效的完成同樣事情的方法?這樣做的最佳做法是什麼?
要回答我的問題:
對於這種類型的投票應用程序的,必須有一個小的超時值。超時指定內部選擇功能阻塞等待套接字激活的時間。如果您經常發送數據,則需要將超時設置爲一個較小的值,以便select以可接受的時間間隔輪詢您的套接字以獲取可寫數據。否則,選擇將在檢查之前阻塞太久,並可能導致這些類型的延遲。
最後我用了0.05秒的超時時間。
這看起來不對。如果在可寫集合中傳遞的套接字是可寫的,則select()將立即返回。這是select的目的:立即告訴你可讀集中的套接字何時可讀,並且可寫集中的套接字是可寫的。超時只是在返回之前等待這兩個條件之一的時間上限,並指出沒有任何可讀或不可寫的套接字。 – 2011-12-06 14:42:36
很難理解超時值與相關性的關係。也許代碼可能有助於澄清這一點。 – 2010-09-24 20:55:51