while循环中的Python管道
我试图编写一个分散的工具,跟踪运行该代码的其他计算机的IP,以探索分散。问题在于从子流程到主程序的管道信息。我编写了一个较小的程序来模拟这个问题。第一个代码段是主进程,它启动子进程并侦听管道中的流量。第二段是使用print()将数据发送回主进程的子进程。但数据从未到达while循环中的Python管道,python,python-3.x,Python,Python 3.x,我试图编写一个分散的工具,跟踪运行该代码的其他计算机的IP,以探索分散。问题在于从子流程到主程序的管道信息。我编写了一个较小的程序来模拟这个问题。第一个代码段是主进程,它启动子进程并侦听管道中的流量。第二段是使用print()将数据发送回主进程的子进程。但数据从未到达 # main process from subprocess import Popen, PIPE listener = Popen(['python3', 'a.py'], stdout=PIPE, stderr=PIPE) i
# main process
from subprocess import Popen, PIPE
listener = Popen(['python3', 'a.py'], stdout=PIPE, stderr=PIPE)
i = 1
while i == 1:
stdout, stderr = listener.communicate()
print(stdout)
子流程:
# subprocess "a.py"
from time import sleep
i = 1
while i == 1:
sleep(1)
print('new:192.168.2.24', flush=True)
print('new:192.168.2.24', flush=True)
等待进程终止。来自文档(我的)
与进程交互:向stdin发送数据。从stdout和stderr读取数据,直到到达文件末尾等待进程终止并设置returncode属性。可选输入参数应该是要发送给子进程的数据,如果不应该发送数据给子进程,则为None。如果以文本模式打开流,则输入必须是字符串。否则,它必须是字节
你会想直接阅读
print(listener.stdout.readline())