我有一个长时间运行的脚本,它会生成一个输出。我使用child_process在nodejs中运行这个脚本。如何在脚本开始执行时发送输出,并且不等待脚本完成。我目前拥有的代码会等待脚本完成,然后将所有stdout一次性输出到nodejs控制台。
示例脚本:
import time
if __name__ == '__main__':
for i in range(5):
time.sleep(1)
print("Hello how are you " + str(i))
Node.js 代码:
var spawn = require('child_process').spawn,
ls = spawn('python', ['path/test.py']);
ls.stdout.on('data', function (data) {
console.log('stdout: ' + data);
});
ls.stderr.on('data', function (data) {
console.log('stderr: ' + data);
});
ls.on('close', function (code) {
console.log('child process exited with code ' + code);
});
console.log 等待脚本完成后输出结果。
Hello how are you 1
Hello how are you 2
Hello how are you 3
Hello how are you 4
Hello how are you 5
一次性发送stdout。有没有办法在子进程停止之前立即发送正在写入的stdout?