Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/359.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python twisted中的高事件处理_Python_Multiprocessing_Twisted - Fatal编程技术网

Python twisted中的高事件处理

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个内核,我希

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

仅限Twisted RX=~90K EPS Twisted RX和TX=~45K每股收益(基本上仅为RX的一半) 扭曲接收、处理和发送=~6K EPS(接近,但不是15K EPS) 处理部分主要是一个CPU受限的任务。我尝试使用
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
。不过,感谢您的建议,我将进一步使用它,看看是否能提高正则表达式的效率。