Python twisted中的高事件处理
我需要写一个应用程序,可以接收,处理,然后发送事件约15k事件每秒(EPS)。我一直在学习twisted,并一直在使用它对一些测试进行基准测试: 仅限Twisted RX=~90K EPS Twisted RX和TX=~45K每股收益(基本上仅为RX的一半) 扭曲接收、处理和发送=~6K EPS(接近,但不是15K EPS) 处理部分主要是一个CPU受限的任务。我尝试使用Python twisted中的高事件处理,python,multiprocessing,twisted,Python,Multiprocessing,Twisted,我需要写一个应用程序,可以接收,处理,然后发送事件约15k事件每秒(EPS)。我一直在学习twisted,并一直在使用它对一些测试进行基准测试: 仅限Twisted RX=~90K EPS Twisted RX和TX=~45K每股收益(基本上仅为RX的一半) 扭曲接收、处理和发送=~6K EPS(接近,但不是15K EPS) 处理部分主要是一个CPU受限的任务。我尝试使用threads.deferToThread和回调,但正如预期的那样,没有改善CPU限制的处理 我的服务器有256个内核,我希
threads.deferToThread
和回调,但正如预期的那样,没有改善CPU限制的处理
我的服务器有256个内核,我希望能够在使用twisted时使用它们。我可以用twisted包装多处理吗?每个进程都需要共享一个dict
,因此我必须使用
多处理可以在twisted中完成吗?在twisted中有没有一种更快的并行运行CPU密集型任务(正则表达式)的方法 与评论者一样,我想指出多处理问题 这样,您就可以生成一组阻塞正则表达式匹配进程,并通过childFDs
ipprocessprotocol.childDataReceived
和ipprocesstransport.writeToChild
方法与它们通信
这将使您的twisted reactor继续全速运行,并使您更接近非处理数字(减去管理额外文件描述符的cpu时间(尽管与让正则表达式阻塞reactor相比,这应该是很小的))请参见以下问题:。公认的答案来自twisted的创始人,因此他是一个相当权威的消息来源。相关:“将CPU绑定的任务转换为I/O绑定的任务,这样Python应用程序更易于扩展。”(我喜欢这句话:它也适用于twisted)可以发布GIL。您可以尝试使用
deferToThread
,看看它是否有所改进。@J.F.Sebastian-替换regex
是个好主意-我的结果表明它实际上比标准re
慢。3484个EPS使用regex
和concurrent=True,6414个EPS使用re
。不过,感谢您的建议,我将进一步使用它,看看是否能提高正则表达式的效率。