我想让 Python 线程等待来自一个套接字(串行端口、TCP/IP 等)的数据,或者等待来自另一个线程的数据。
我想要一个可移植的 Windows 和 Linux 解决方案。
我正在寻找类似于 select.select() 但我相信我不能在 Windows 上使用 select.select() 进行线程间通信。
这很容易吗?
我想让 Python 线程等待来自一个套接字(串行端口、TCP/IP 等)的数据,或者等待来自另一个线程的数据。
我想要一个可移植的 Windows 和 Linux 解决方案。
我正在寻找类似于 select.select() 但我相信我不能在 Windows 上使用 select.select() 进行线程间通信。
这很容易吗?
您确定有必要使用线程吗?您是否正在使用一些需要使用它们的外国 API?
无论如何,使用 Twisted,您可以轻松地监听任何类似文件的便携(包括串行端口和 TCP 套接字)。此外,如果您确实需要使用线程,Twisted 提供了几个工具来执行此操作。根据您的描述,最简单的方法是调用reactor.callFromThread
. 如果你想取回数据而不是简单地调用反应器线程中的函数,Twisted 提供了twisted.internet.threads.blockingCallFromThread
,它将阻塞直到反应器线程中的函数返回(或者,如果它返回延迟,直到延迟触发)。