为了账号安全,请及时绑定邮箱和手机立即绑定

Python扭曲的最大活动连接数

Python扭曲的最大活动连接数

白衣染霜花 2021-03-25 06:09:46
我正在编写一个简单的程序,该程序可以在运行许多客户端的单台计算机和使用Twisted的多台服务器之间来回发送消息。答复这些消息需要相当长的计算,这就是为什么我实现deferToThread()与Callback()客户端和服务器,以不从在未来阻止邮件上都。但是,我想最大化可以同时处理的同时活动连接的数量。我认为,按照目前的状态,我的程序可以同时处理10个活动连接(例如,在10个线程中执行计算以在客户端或服务器上进行答复的线程)。这是活动连接的默认数量是否有意义,是否可以使用此处suggestThreadPoolSize()所述的电抗器选项来增加它?
查看完整描述

1 回答

?
繁星点点滴滴

TA贡献1803条经验 获得超3个赞

如果您的程序是CPU绑定的,那么Python全局解释器锁将阻止您具有任何多CPU并发性,因此摆弄线程池大小不会对程序处理新连接的速度产生太大的实际影响。 。


相反,您应该用于reactor.spawnProcess启动子流程,并将CPU密集型工作转移到子流程池中。诸如安瓿瓶之类的东西可能会帮助您更方便地完成此操作。


但是,即使有多个进程也只会为您购买与CPU数量相同的CPU并发性。(实际上是内核,内核或超线程;但是,至少是“逻辑” CPU。)如果您没有足够的资源来实际执行此工作,则要接受更多的工作,这将在内存中建立巨大的缓冲区,并最终使您的崩溃程序。最终,您需要施加背压。


Twisted确实提供了您现在需要做的所有工具,尽管我们正在努力使其变得更容易。


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


查看完整回答
反对 回复 2021-03-30
  • 1 回答
  • 0 关注
  • 150 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信