gpt4 book ai didi

Python 子进程不会跟我说话

转载 作者:行者123 更新时间:2023-12-01 01:45:03 25 4
gpt4 key购买 nike

我有一个 python 脚本,它运行另一个 python 脚本作为子进程。原始脚本使用 stdin 和 stdout 与子进程通信。我无法让子进程回复原始进程的消息。

作为一个最小的示例,假设我有一个脚本 Asker.py,它想要从answerer.py 获取答案。询问者向应答者的标准输入发送一条消息,应答者必须发回一条消息,询问者将打印该消息。

asker.py 看起来像这样:

import sys
import subprocess as sub

answerer = sub.Popen(["python", "answerer.py"], stdin=sub.PIPE, stdout=sub.PIPE)
answerer.stdin.write("Are you listening?\n")
answerer.stdin.flush()
reply = answerer.stdout.readline()
print reply

answerer.py 看起来像这样:

while (True):
line = raw_input()
print "Yes!"

我没有看到 Asker.py 打印任何内容。相反,它只是卡在 readline() 调用上。如果我直接从命令行运行answerer.py,它会很好地回复我输入的输入,那么我如何让它回复提问者呢?

最佳答案

刷新stdout而不是stdin:

answerer.stdout.flush()  # line 6

或者在没有 while True: 的情况下进行测试,这样answerer.py就会终止,并且Yes!会自动刷新。

测试于

Python 2.7.13 (default, Apr  4 2017, 08:47:57) 
[GCC 4.2.1 Compatible Apple LLVM 8.1.0 (clang-802.0.38)] on darwin

关于Python 子进程不会跟我说话,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51466124/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com