外包做网站需要多少钱,武冈 网站建设,做网站认证对网站有什么好处,枣庄市市中区建设路网站NodeJS 作为后端#xff0c;仅在需要时调用 Python 在某些特殊的场景下#xff0c;比如复杂耗时的数据处理和运算时#xff0c;我们可以用 Python 脚本编写#xff0c;然后使用 Node 的子进程调用 Python 脚本即可#xff0c;这样可以提升效率。如下代码#xff0c;我们…NodeJS 作为后端仅在需要时调用 Python 在某些特殊的场景下比如复杂耗时的数据处理和运算时我们可以用 Python 脚本编写然后使用 Node 的子进程调用 Python 脚本即可这样可以提升效率。如下代码我们可以使用 Node.js 的 API child_process.spawn(command[, args][, options]) 进行调用 Python 脚本
const spawn require(child_process).spawn
app.get(process_data, (req, res) {spawn(python3, [script.py])
}) Python 脚本
# script.py doSometing() 如果我们的 Node 脚本向 Python 脚本传递参数那该怎么传呢如下段代码所示
const spawn require(child_process).spawn
app.get(process_data, (req, res) {const msg Hellospawn(python3, [script.py, msg])
}) 这时我们需要改下 Python 的脚本接收 NodeJS 传过的参数。如下段代码所示
import sys, jsondef main():msg sys.argv[1]doSometing(msg)if __name__ __main__:main() 如果传输 JSON 这样复杂的数据我们需要改写 Node 的写法以数据流的形式传递给 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.stringify
py.stdin.end() 接下来我们来改下 Python 脚本接收 Node 前端传送的数据流进行下一步的逻辑处理
import sys, jsondef main():lines sys.stdin.readlines()data json.loads(lines)doSometing(data[msg])if __name__ __main__:main() Node 除了可以往 Python 传递数据同时可以接收 Python 传递的数据接下来我们来改写 Node 相关的脚本示例代码如下
const spawn require(child_process).spawn
const py spawn(python3, [cscript.py])py.stdout.on(data, function(res){let data JSON.parse(res.toString())console.log(data)
})