在 Node 中调用 Python

简介: 在 Node 中调用 Python

在 Node 中如何调用 Python 的方法?通常可以通过 REST 接口或者 RPC 的方式来完成,但是某些时候我们仅仅只需要调用对方几个很简单的方法,这种情况下去构建一个提供 REST 接口的服务或者两者对接实现 RPC 调用,这种做法的成本显然有点高。本文将会介绍一种更轻量的调用方式。





01


原理


这里轻量级的调用方式其实就是通过 command line interface 实现:

首先转换 Python 程序,使其可以通过命令行的方式调用;然后在 Node 中执行命令。这样就可以轻松的实现 Node 对 Python 的调用。



02


示例


示例:在 Python 中有个方法是通过 PIL(图片处理库)获取 GIF 图片的帧数,并通过 Fire( CLI 工具)将其转换为命令行接口,最后在 Node 中通过 child_process 中的 spawn 执行命令调用 Python 的方法。


1、编写 Python 程序,命名为 p.py :

PIL 和 fire 都是第三方库,可以通过 pip 或者 pipenv 安装。

通过 PIL 获取图片的 n_frames 属性即图片帧数,这对 GIF 这种 multi-frames 图片是正常的,但普通的 PNG 和 JPG 图片帧数就是一,获取其 n_frames 会抛出 AttributeError 异常,捕获处理即可。

通过 fire 将此方法转换成命令行接口,这样就可以在命令行中输入:

python3  p.py  24m.gif

即可执行 Python 中的此方法获取到图片的帧数,24m.gif 就是需要提取的图片路径。


2、在 Node 中调用:

通过 child_process 中的 spawn 执行相同的命令即可。







结语


这里其实最关键的一点就是通过 fire 去生成 Python 的命令行接口,fire 的更多用法参考官方文档即可。


对于本文中的示例提取 GIF 图片帧数,如果要在 Node 中实现,你可以通过 gm(GraphicsMagick)完成,但是效率极差,提取 24M 大小 47 帧的 GIF 图片需要二十秒,这显然无法接受,而通过 Python 的 PIL 则几乎瞬间完成。


不可否认的是 Node 和 Python 各有所长,本文介绍的通过命令行接口的轻量级调用方式,可以我们更加灵活的运用两种编程语言,更加高效的实现业务需求。

目录
相关文章
|
JavaScript 前端开发 Python
Node.js在Python中的应用实例demo
Node.js在Python中的应用实例demo
137 2
|
JavaScript 前端开发 API
Node.js在Python中的应用实例解析
Node.js在Python中的应用实例解析
|
JavaScript Python 内存技术
error C:\Users\Acer\Downloads\Desktop\hrsaas-84\node_modules\deasync: 莫名其妙报错一堆python问题
error C:\Users\Acer\Downloads\Desktop\hrsaas-84\node_modules\deasync: 莫名其妙报错一堆python问题
217 0
|
5月前
|
Web App开发 JavaScript 前端开发
探索Node.js后端开发之旅深入浅出Python装饰器
【8月更文挑战第29天】在数字化时代,掌握一门后端编程语言变得尤为重要。Node.js作为一种基于JavaScript的服务端平台,因其高性能、轻量级的特性而广受欢迎。本文将引导读者了解Node.js的基本概念、核心模块以及如何利用它来构建一个简易的Web服务器。通过本文的学习,你将获得使用Node.js进行后端开发的初步技能,并理解其在现代Web开发中的应用价值。
|
5月前
|
JavaScript Java Python
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
【Azure 应用服务】在Azure App Service for Windows 中部署Java/NodeJS/Python项目时,web.config的配置模板内容
|
6月前
|
存储 Python 容器
Node中的AsyncLocalStorage 使用问题之在Python中,线程内变量的问题如何解决
Node中的AsyncLocalStorage 使用问题之在Python中,线程内变量的问题如何解决
|
8月前
|
Python
NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
NPM【问题 01】npm i node-sass@4.14.1报错not found: python2及Cannot download问题处理
806 0
|
JavaScript 前端开发 中间件
python web 开发与 Node.js + Express 创建web服务器入门
python web 开发与 Node.js + Express 创建web服务器入门
195 0
|
监控 开发工具 Docker
Docker 镜像构建:Python & Node
Docker 镜像构建:Python & Node
713 0
|
监控 JavaScript Shell
从 node 到 python
从 node 到 python
86 0