Python Twisted 最大活动连接数

2024-10-01 07:27:39 发布

您现在位置:Python中文网/ 问答频道 /正文

我在写一个简单的程序,在运行多个客户端的一台计算机和使用Twisted的多个服务器之间来回发送消息。回复这些消息需要相当长的计算,这就是为什么我在客户端和服务器上实现了deferToThread()和{},以避免阻止消息传入。在

但是,我希望最大化可以同时处理的同时活动连接的数量。我认为,从现在的情况来看,我的程序可以同时处理10个活动连接(比如10个线程在客户端或服务器上执行响应计算)。这是默认的活动连接数有意义吗?我可以为reactor使用suggestThreadPoolSize()选项来增加它吗?在


Tags: 程序服务器消息客户端数量选项计算机twisted
1条回答
网友
1楼 · 发布于 2024-10-01 07:27:39

如果您的程序是CPU绑定的,那么Python global interpreter lock将阻止您拥有任何多CPU并发,因此,修改线程池大小不会对程序处理新连接的速度产生太多实际影响。在

相反,您应该使用^{}来启动一个子进程,并将CPU密集型工作转移到子进程池中。像Ampoule这样的方法可能会帮助您更方便地执行此操作。在

然而,即使是多个进程也只会为您带来与您所拥有的相同的CPU并发性。。。CPU。(好吧,核心或者超线程,但至少是“逻辑的”cpu)当你没有足够的资源来做更多的工作时,接受更多的工作会在内存中建立巨大的缓冲区,最终使你的程序崩溃。最终你需要apply backpressure。在

Twisted确实提供了all the tools you need来实现这一点,尽管我们正在努力使它even easier。在

哦-这应该不用说,但是如果你的程序不受CPU的限制,那么你应该停止使用线程;-)。在

相关问题 更多 >