7

可能重复:
select() 可以在 Windows 下与 Python 中的文件一起使用吗?

在 UNIX 上,我可以在 Python 中sys.stdin传递select.select。我试图在 Windows 上执行此操作,但select.select在 Windows 上的 Python 中不允许这样做。

要更准确地描述我在做什么,请参阅https://github.com/eldarion/gondor-client/blob/ccbbf9d4b61ecbc2f66f510b993eb5fba0d81c09/gondor/run.py

unix_run_poll功能是我试图在 Windows 上完成的。基本思想是,我有一个到服务器的套接字连接,该服务器已将流式标准输入、标准输出、标准错误连接到远程运行的进程,并且我从本地客户端与它进行交互,并使其看起来好像本地客户端正在运行过程。

win32_run_poll是我将它移植到 Windows 的尝试,它确实可以工作。这有点不稳定,而且 IMO 的方法非常糟糕。

有人对如何改进有任何建议吗?对 win32api 的依赖并不理想,但我可以保留它。

4

1 回答 1

7

在 Windowsselect上只为套接字定义,并且不适用于任意文件句柄(Windows 没有文件描述符的概念)。有关此问题的更多信息,请参阅msdn 文档,在 select 模块的python 文档中也提到了这一点。

如果你想对任意文件使用轮询,你应该研究抽象轮询套接字和文件句柄的东西。这可能是您帖子的评论中提到的扭曲反应器,也可能是与libuv或您选择的其他事件库的 python 绑定。

于 2012-09-19T18:26:48.527 回答