Node.js subprocess.stdout未拾取Python3打印stdout刷新

问题描述 投票:0回答:1

据我了解,每次刷新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` ...

node.js python-3.x stdout child-process
1个回答
0
投票

这是因为,在Python中,下一次打印之前刷新未完成并写入stdout缓冲区吗?

© www.soinside.com 2019 - 2024. All rights reserved.