据我了解,每次刷新stdout时都会触发subprocess.stdout.on('data', ...)
。>
我有以下NodeJS代码:
const cp = require('child_process'); const subprocess = cp.spawn(`python3`, [`main.py`]); subprocess.stdout.on(`data`, (data) => { console.log(`Got: ${data.toString()}`) })
并且在同一文件夹中,
main.py
包含:
import time for i in range(5): print(i, flush=True) # time.sleep(1)
如果未注释
time.sleep(1)
行,则NodeJS代码将按预期运行,表明flush实际上会触发stdout数据侦听器,给出
Got: 0 Got: 1 Got: 2 Got: 3 Got: 4
但是,当注释该行时,行为是不一致的,侦听器将触发两次/而不是四次。
这是因为,在Python中,下一次打印之前刷新未完成并写入stdout缓冲区吗?
(上下文:我正在使用它来侦听Python程序的进度(通过stdout),并且我的刷新没有被拾取)
据我所知,每次刷新stdout时都会触发subprocess.stdout.on('data',...)。我有以下NodeJS代码:const cp = require('child_process'); const subprocess = cp.spawn(`python3` ...
这是因为,在Python中,下一次打印之前刷新未完成并写入stdout缓冲区吗?