我想让一个 Python 线程等待来自一个套接字(串行端口、TCP/IP 等)的数据,或者等待来自另一个线程的数据。
我想要一个可移植的 Windows 和 Linux 解决方案。
我正在寻找类似于 select.select() 的东西,但我相信我不能在 Windows 上使用 select.select() 进行线程间通信。
这容易实现吗?
最佳答案
你确定有必要使用线程吗?您是否正在使用一些需要使用它们的外国 API?
无论如何,使用 Twisted,您可以轻松地监听任何文件,如可移植的(包括串行端口和 TCP 套接字)。此外,假设您确实需要使用线程,Twisted 提供了多种工具来实现这一点。根据您的描述,最简单的方法是调用 reactor.callFromThread
.如果你想取回数据而不是简单地调用 react 器线程中的函数,Twisted 提供了twisted.internet.threads.blockingCallFromThread
,它将阻塞直到 react 器线程中的函数返回(或者,如果它返回一个延迟,直到延迟触发)。
关于python - 异步 I/O 多路复用(套接字和线程间),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16112738/