这段代码会在windows中ping一个ip地址并每2秒得到一个输出行,但是,我发现ping.exe进程在运行后会有非常缓慢的内存增加,如果我将它部署到ping 1000 ip并行,会导致服务器挂起,我认为这可能是由于stdout缓冲区,我可以知道如何清除标准输出或限制其大小?谢谢!如何清除Python子流程中的stdout?
...
proc = subprocess.Popen(['c:\windows\system32\ping.exe','127.0.0.1', '-l', '10000', '-t'],stdout=subprocess.PIPE, creationflags=subprocess.CREATE_NEW_PROCESS_GROUP)
while True:
time.sleep(2)
os.kill(proc.pid, signal.CTRL_BREAK_EVENT)
line = proc.stdout.readline()
你包含转义反斜线串的作品,因为'\ w','\ s'和'\ p'不是转义序列,所以Python会将反斜杠视为反斜杠。虽然这不是一个好主意。你应该避免反斜杠(加倍)或使用原始字符串('r'...'')。 –