前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >在 Node 中调用 Python

在 Node 中调用 Python

作者头像
凌虚
发布2020-07-17 11:49:52
5.6K0
发布2020-07-17 11:49:52
举报

在 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 各有所长,本文介绍的通过命令行接口的轻量级调用方式,可以我们更加灵活的运用两种编程语言,更加高效的实现业务需求。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2019-02-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Node Python Go全栈开发 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
图片处理
图片处理(Image Processing,IP)是由腾讯云数据万象提供的丰富的图片处理服务,广泛应用于腾讯内部各产品。支持对腾讯云对象存储 COS 或第三方源的图片进行处理,提供基础处理能力(图片裁剪、转格式、缩放、打水印等)、图片瘦身能力(Guetzli 压缩、AVIF 转码压缩)、盲水印版权保护能力,同时支持先进的图像 AI 功能(图像增强、图像标签、图像评分、图像修复、商品抠图等),满足多种业务场景下的图片处理需求。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档