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中处理来自多个套接字的传入数据_Python_Multithreading_Sockets - Fatal编程技术网

在Python中处理来自多个套接字的传入数据

在Python中处理来自多个套接字的传入数据,python,multithreading,sockets,Python,Multithreading,Sockets,背景: 我有一个当前的实现,它在python中从大约120个不同的套接字连接接收数据。在我当前的实现中,我用一个专用线程处理每个单独的套接字连接。这些线程中的每一个都解析数据,并最终将其存储在共享的锁定字典中。这些套接字没有统一的数据速率,一些套接字比其他套接字获得更多的数据 问题: 这是在python中处理传入数据的最佳方法,还是python在处理每个线程的多个套接字方面有更好的方法?使用异步方法会让您更高兴。例如,作为一个众所周知的应用程序,这是一个很好的实现。您也可以轻松地将Tornado

背景: 我有一个当前的实现,它在python中从大约120个不同的套接字连接接收数据。在我当前的实现中,我用一个专用线程处理每个单独的套接字连接。这些线程中的每一个都解析数据,并最终将其存储在共享的锁定字典中。这些套接字没有统一的数据速率,一些套接字比其他套接字获得更多的数据

问题:
这是在python中处理传入数据的最佳方法,还是python在处理每个线程的多个套接字方面有更好的方法?

使用异步方法会让您更高兴。例如,作为一个众所周知的应用程序,这是一个很好的实现。您也可以轻松地将Tornado的iLoop用于web服务器以外的其他用途


还有其他图书馆,如:;但我认为Tornado是一个更好的开始,因为它提供了循环和在其上实现的web服务器,是如何很好地使用循环的一个很好的例子。

如果您使用线程,基本上就是这样

另一种方法是使用各种异步网络库中的一种,例如,或。

如您所述,可用于高效地处理许多异步套接字。asyncoro的另一个好处是,您不必担心锁定共享字典,因为asyncoro在任何时候最多执行一个协同程序,并且没有强制抢占