专业编程基础技术教程

网站首页 > 基础教程 正文

Node.js如何调用Python脚本?

ccvgpt 2024-11-25 10:14:02 基础教程 1 ℃

Node.js比较适合执行IO密集的操作,不擅长数据处理等CPU密集的操作。

而Python则比较擅长数据处理,且有很多好用的工具和计算库。

Node.js如何调用Python脚本?

用Node调用Python,就成为一种不错的实用组合,在日常工作中是非常有用的。

?

??

?

这里简单记录一下,Node如何调用Python。使用Node的child_process?库,可以创建并管理子进程。其具体函数为spawn?。

Node示例代码如下:

const spawn=require('child_process').spawn
const py = spawn('python',['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.')

调用的Python脚本a.py代码如下:

import time
print('python start',flush=True)
time.sleep(10) #等待10秒
print('python end',flush=True)

?

用Node执行js脚本后,由于js都是异步操作,因此会执行语句打印“start…………”和“end.”。

Node父进程会等待Python子进程执行完成。

因为监听了stdout,当Python子进程打印到stdout的内容,会被Node父进程接受并显示。

因为监听了close消息,当Python子进程退出时,Node父进程也会监听到退出信号。

??

使用Node.js调用Python,一定程度上可以弥补Node.js缺乏计算密集能力的不足。同样的方式,也可以形成Node.js+Java等组合,进一步扩大了Node.js的使用范围。

?

参考:

child_process 子进程 | Node.js API 文档 (nodejs.cn)

?

Tags:

最近发表
标签列表