gpt4 book ai didi

Python Twisted 最大事件连接数

转载 作者:太空宇宙 更新时间:2023-11-04 01:27:16 26 4
gpt4 key购买 nike

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

但是,我想最大化可以并发处理的并发事件连接数。我认为,就目前而言,我的程序可以同时处理 10 个事件连接(如 10 个线程在客户端或服务器上执行回复计算)。这是事件连接的默认数量是否有意义,我可以使用 react 器的 suggestThreadPoolSize() 选项来增加它,如 here 所述?

最佳答案

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

相反,您应该使用 reactor.spawnProcess启动一个子进程,并将您的 CPU 密集型工作转移到一个子进程池中。诸如 Ampoule 之类的东西可能会帮助您更方便地执行此操作。

然而,即使是多个进程也只能为您购买尽可能多的 CPU 并发性,因为您拥有……CPU。 (好吧,确实是内核或超线程;但是,至少是“逻辑”CPU。)当您没有可用资源来实际工作时接受更多的工作将会积累大量的工作内存中的缓冲区并最终导致程序崩溃。最终你需要 apply backpressure .

Twisted 确实提供了 all the tools you need现在就这样做,尽管我们正在努力做到这一点even easier .

哦 - 这不言而喻,但如果您的程序不是 CPU 绑定(bind),那么您应该停止使用线程 ;-)。

关于Python Twisted 最大事件连接数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16953358/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com