【问题标题】:Python asyncore with very low timeoutPython asyncore 具有非常低的超时
【发布时间】:2010-09-24 16:48:08
【问题描述】:

我编写了一个使用 asyncore 模块同时与多个服务器通信的程序。在大多数情况下,我只是响应从服务器接收到的数据,但有时我需要发送一些“不同步”的数据。默认超时时间为 30 秒,在发送数据包之前会有明显的延迟,因此我将超时时间降低到 0.1 以提高响应速度。

我的问题是:在性能方面使用如此低的值是否是一个好主意,如果不是,是否有另一种更高效的方式来完成同样的事情?这样做的最佳做法是什么?

【问题讨论】:

  • 很难理解超时值有什么相关性。也许代码可能有助于澄清这一点。

标签: python sockets asyncore


【解决方案1】:

回答我自己的问题:

对于这种类型的轮询应用程序,需要有一个小的超时值。超时指定内部选择功能阻塞等待套接字变为活动的时间。如果您经常发送数据,则需要将超时设置为一个较小的值,以便 select 以可接受的间隔轮询您的套接字以获取可写数据。否则 select 会在检查之前阻塞太久,并可能导致此类延迟。

最后我使用了 0.05 秒的超时时间。

【讨论】:

  • 这似乎是错误的。如果在可写集中传递的套接字是可写的,则 select() 将立即返回。这就是 select 的目的:立即告诉您可读集中的套接字何时可读以及可写集中的套接字何时可写。超时只是为了设置一个上限,它在返回之前等待这两个条件之一的时间,并表明没有任何可读或可写的套接字。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2020-08-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2019-01-15
  • 1970-01-01
相关资源
最近更新 更多