【发布时间】:2012-09-12 01:06:15
【问题描述】:
可能重复:
Can select() be used with files in Python under Windows?
在 UNIX 上,我可以在 Python 中将sys.stdin 传递给select.select。我正在尝试在 Windows 上执行此操作,但 Windows 上 Python 中的 select.select 不允许这样做。
要更准确地描述我在做什么,请参阅https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.py。
unix_run_poll 函数是我试图在 Windows 上完成的。基本思想是我有一个到服务器的套接字连接,该服务器已将流式标准输入、标准输出、标准错误连接到远程运行的进程,并且我从本地客户端与它进行交互并使其看起来好像本地客户端正在运行过程。
win32_run_poll 是我尝试将其移植到 Windows 的尝试,它确实可以工作。这有点不稳定,而且 IMO 的方法非常糟糕。
有人对如何改进有建议吗?对win32api的依赖不太理想,但我可以保留它。
【问题讨论】:
-
您是否查看过专门用于事件循环实现的库/框架?例如,twisted 有两个 Win32 reactor 的实现。
-
你提到这个很有趣。我碰巧现在正在这样做。 :-)
-
另一种可能性是实际为您的脚本提供套接字,而不是将其包装为脚本的标准输入/标准输出,然后您就可以使用 select.select。
-
我的问题表述得不够好。作为发帖者,我知道您不能在 Windows 上的
select中使用sys.stdin。您链接的问题正在给出答案。我不想要那个答案。如果您查看我链接的代码,它将表明我比我的问题标题可能推断出的更清楚地理解了这个问题。
标签: python windows winapi network-programming