我编写了一个使用asyncore模块同时与许多服务器通信的程序。在大多数情况下,我只是回应从服务器收到的数据,但偶尔我需要发送一些“不同步”的数据。默认超时为30秒,在发送数据包之前会有明显的延迟,因此我将超时降低到0.1以获得更高的响应速度。
我的问题是:使用具有如此低值的超时性能是否是一个好主意,如果没有,是否还有另一种更高效的方法来完成同样的事情?这样做的最佳做法是什么?
答案 0 :(得分:1)
回答我自己的问题:
对于这种类型的轮询应用程序,必须具有较小的超时值。超时指定内部选择功能阻止等待套接字变为活动状态的时间。如果您经常发送数据,则需要将超时设置为较小的值,以便select以可接受的间隔轮询套接字以查找可写数据。否则select会在检查之前阻塞太长时间并导致这些延迟。
最后我使用0.05秒的超时。