异步I / O复用(套接字和线程间)

时间:2013-04-19 20:08:36

标签: python linux windows asynchronous asyncsocket

我想让Python线程等待来自一个套接字(串行端口,TCP / IP等)的数据,或等待来自另一个线程的数据。

我想要一个可移植的Windows-Linux解决方案。

我正在寻找的是类似于select.select()但我相信我不能在Windows上使用select.select()进行线程间通信。

这可能很容易吗?

1 个答案:

答案 0 :(得分:1)

您确定有必要使用线程吗?您使用的是需要使用的外国API吗?

无论如何,使用Twisted,您可以轻松地侦听任何类似文件(包括串行端口和TCP套接字)。另外,如果你确实需要使用线程,Twisted提供了几个工具来实现。根据您的描述,最简单的方法是调用reactor.callFromThread。如果你想要获取数据而不是简单地在反应器线程中调用函数,Twisted提供twisted.internet.threads.blockingCallFromThread,它将阻塞直到反应器线程中的函数返回(或者,如果它返回延迟,直到延迟触发) )。