使用node.js调用本地python代码
9374 2023/7/19
使用Node的child_process库,可以创建并管理子进程。其具体函数为spawn。
# Node示例代码如下:
const spawn = require('child_process').spawn
const py = spawn('python3', ['a.py'])
console.log('start…………')
py.stdout.on('data', function (res) {
let data = res.toString()
console.log('stdout: ', data)
})
py.stderr.on('data', function (res) {
let data = res.toString()
console.log('stderr: ', data)
})
py.on('close', (code) => {
console.log(`子进程退出:退出代码code ${code}`)
})
console.log('end.')
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
# 调用的Python脚本a.py代码如下:
import time
print('python start',flush=True)
time.sleep(10) #等待10秒
print('python end',flush=True)
1
2
3
4
2
3
4
# 结束
用Node执行js脚本后,由于js都是异步操作,因此会执行语句打印“start…………”和“end.”。
Node父进程会等待Python子进程执行完成。
因为监听了stdout,当Python子进程打印到stdout的内容,会被Node父进程接受并显示。
因为监听了close消息,当Python子进程退出时,Node父进程也会监听到退出信号。