为简单起见,这里减少了代码。
server.py
import sys
while True:
for line in sys.stdin:
# Do something here
client.py
import subprocess
import sys
p = subprocess.Popen([sys.executable, "server.py"], stdin=subprocess.PIPE)
当我在sys.stdin
中没有数据时,在for循环中stdin
读取时直接运行 server.py 的python块。这是预期的。
当我运行 client.py ,在stDI连接到PIPE的子进程中运行 server.py 时,server.py不再在for循环中阻塞在stdin中读取,导致我的CPU使用率达到100%。这是因为当没有任何内容可以从stdin中读取时,循环无限运行而不是阻塞。
在导致此问题的子进程中将stdin连接到PIPE有什么用?有办法解决吗?当没有数据要读取stdin时,我想要for循环阻塞。