twisted中的高事件处理

2024-04-29 03:42:52 发布

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

我需要写一个应用程序,可以接收,处理,然后发送事件约15k事件每秒(EPS)。我一直在学习twisted并用它来测试:

Twisted RX only = ~90K EPS
Twisted RX and TX = ~45K EPS (basically half of RX only)
Twisted RX, processing, and TX = ~6K EPS (close, but not 15K EPS)

处理部分主要是一个single regex matches condition-一个受CPU限制的任务。我尝试使用threads.deferToThread和回调,但正如预期的那样,并没有改善CPU绑定的处理。在

我的服务器有256个核心,我希望能够在使用twisted时使用它们。我能用twisted包装多处理吗?每个进程需要共享一个dict,所以我必须使用^{}。在

多处理可以在twisted中完成吗?在twisted中有没有一种更快的方式并行运行CPU重的任务(regex表达式)?在


Tags: andof应用程序only事件twistedcpueps
1条回答
网友
1楼 · 发布于 2024-04-29 03:42:52

与注释者一样,我会针对多处理问题指向Glyph's answer。在

这样,您就可以派生出一组阻塞的regex匹配进程,并通过childFDsIProcessProtocol.childDataReceivedIProcessTransport.writeToChild方法与它们通信。在

这将使twisted reactor继续全速运行,并使您更接近非处理的数字(减去管理额外文件描述符的cpu时间(尽管与让regex阻止reactor相比,这应该很小))

相关问题 更多 >