如何中止在 python3 中等待 sys.stdin?
Posted
技术标签:
【中文标题】如何中止在 python3 中等待 sys.stdin?【英文标题】:How to abort waiting for sys.stdin in python3? 【发布时间】:2016-11-20 06:11:24 【问题描述】:我正在运行一个包含两个线程的脚本,一个从子进程读取的线程和一个主线程。
在主线程中,我正在阅读stdin
,如下所示:
for line in sys.stdin:
if proc.poll() != None:
break
proc.stdin.write(line)
proc.stdin.flush()
<other things happen here>
(proc
是外部子进程)
现在,这很好,直到我想关闭我的程序。当另一个线程中的进程退出时,我希望整个程序停止,但是主线程仍然在等待输入东西到stdin
。我怎样才能中止它?
基本上,我希望stdin
收到EOF
的信号,但我不知道该怎么做。
【问题讨论】:
【参考方案1】:我会交换线程。从主线程中的子进程读取,并在另一个线程中执行阻塞sys.stdin
的东西。这样您就可以将daemon=True
传递给threading.Thread
,这会使主线程退出时线程退出。
【讨论】:
以上是关于如何中止在 python3 中等待 sys.stdin?的主要内容,如果未能解决你的问题,请参考以下文章
在 PHP 中,我将如何立即中止 HTTP 连接,不再发送数据包。客户端应继续等待,直到浏览器内部超时