【发布时间】:2013-06-06 03:44:11
【问题描述】:
我正在编写一个简单的程序,它使用 Twisted 在运行多个客户端的单台计算机和多个服务器之间来回发送消息。回复这些消息需要相当长的计算时间,这就是为什么我在客户端和服务器上都实现了deferToThread() 和Callback(),以免阻止消息进入。
但是,我想最大化可以同时处理的同时活动连接的数量。我认为,就目前而言,我的程序可以同时处理 10 个活动连接(如在 10 个线程中执行计算以在客户端或服务器上进行回复)。这是默认的活动连接数是否有意义,我可以使用here 所述的反应器的suggestThreadPoolSize() 选项来增加它吗?
【问题讨论】:
-
您是否受到处理(CPU 限制、请求排队)或网络(连接打开/关闭)的限制?线程数多于内核数通常是不明智的,但我并没有真正理解您的问题。
-
我的问题可以概括为:
suggestThreadPoolSize()选项有什么作用? -
suggestThreadPoolSize()只是更改了最大并发线程数。但是,您的问题不是您想的那样-您不应该使用该选项,因为它仅与线程中的 I/O 绑定操作真正相关(例如您需要与 3rd-party 数据库驱动程序执行的操作) ,或主机名解析)。有关更多信息,请参阅我的答案。
标签: python networking client-server twisted