2

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

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

4

3 回答 3

3

使用异步方法会让你更快乐。例如,作为一个众所周知的应用程序,Tornado是完美的。您也可以轻松地将 Tornado 的 ioloop 用于 Web 服务器以外的其他事物。

还有其他库,例如gevent;但我相信 Tornado 是一个更好的地方,因为它既提供了循环,又提供了一个在它之上实现的 Web 服务器,作为如何很好地使用循环的一个很好的例子。

于 2012-07-02T03:23:29.643 回答
2

如果您正在使用线程,那基本上就是您要这样做的方式。

另一种方法是使用各种异步网络库之一,例如TwistedTornadoGEvent

于 2012-07-02T03:23:51.047 回答
1

正如您在阅读异步 UDP 套接字的问题中提到的,asyncoro可用于有效地处理许多异步套接字。在您的问题中使用 asyncoro 的另一个好处是您无需担心锁定共享字典,因为使用 asyncoro 在任何时候最多只有一个协程正在执行,并且没有强制抢占。

于 2012-07-12T00:42:34.127 回答