写点什么

Python+JavaScript = 真牛!

作者:Jackpop
  • 2021 年 11 月 09 日
  • 本文字数:1244 字

    阅读完需:约 4 分钟

程序员宝藏库:https://github.com/Jackpopc/CS-Books-Store


谁才是最好的编程语言?


Java、PHP、Python、Go、JavaScript....



每个人都有自己的答案,但是,当范围限定在 Web 开发,没有什么能胜过 JavaScript。


但有时我们必须做一些要求更高的任务,例如,分析大量的数据。


在这种情况下,Python 可能是一个更好的选择。


但这只是我们网站的一个功能,自然不会因为这一点需求而用 Python 开发整个工程。


今天,就来给大家介绍一种能够将 JavaScript 和 Python 完美结合在一起,高效解决工程问题的方法。

JavaScript+Python

这对于很多开发同学来说,绝对算得上一个很吸引人的消息。


我们可以在 Node.JS 中使用子进程,在需要时运行一个 Python 脚本。


const spawn = require('child_process').spawnapp.get("process_data", (req, res) => {    spawn('python3', ['script.py'])})
复制代码


再来写一个 Python 脚本:


# script.pydoSometing()
复制代码


除了这种方式,我们也可以将数据传递给我们的 Python 脚本。


const spawn = require('child_process').spawnapp.get("process_data", (req, res) => {    const msg = "Hello"    spawn('python3', ['script.py', msg])})
复制代码


在 Python 中,为了能够读取数据,你必须导入 sys 模块。


import sys, json
def main(): msg = sys.argv[1] doSometing(msg)
if __name__ == '__main__': main()
复制代码


现在,我们不需要在生成 Python 进程时传递数据,而是在任务工作流中发送数据。


const spawn = require('child_process').spawn,const py = spawn('python3', ['script.py'])const data = {    msg: "Hello"}
py.stdin.write(JSON.stringify(data)) //we have to send data as a string, so we are using JSON.stringifypy.stdin.end()
复制代码


修改一下 Python 脚本:


import sys, json
def main(): lines = sys.stdin.readlines() data = json.loads(lines) doSometing(data['msg'])
if __name__ == '__main__': main()
复制代码


最后,我们可以从 Python 脚本中向 nodejs 发送响应。


const spawn = require('child_process').spawnconst py = spawn('python3', ['cscript.py'])
py.stdout.on('data', function(res){ let data = JSON.parse(res.toString()) console.log(data)})
复制代码


Python 代码为:


import sys
# You will have your own implementation of get data. In this case lets assume it returns a dict/jsonres = getData()print(json.dumps(data))
sys.stdout.flush()
复制代码


这样,我们就可以在 Web 开发过程中,能够同时兼顾 JavaScript、Python 的优势,最大化发挥不同编程语言的价值。无需借助数据库,或者开发繁琐的 api 结构就可以有机的把 JavaScript 与 Python 结合到一起,提升开发效率。


大家好,我是 Jackpop!我花费了半个月的时间把这几年来收集的各种技术干货整理到一起,其中内容包括但不限于 Python、机器学习、深度学习、计算机视觉、推荐系统、Linux、工程化、Java,内容多达 5T+,获取方式:技术干货_免费高速下载|百度网盘-分享无限制(提取码:0000)

用户头像

Jackpop

关注

还未添加个人签名 2020.09.16 加入

公众号:平凡而诗意,微信:code_7steps,全网粉丝超20万,技术进阶、优质资源、实用工具,欢迎关注!

评论

发布
暂无评论
Python+JavaScript = 真牛!