python调用node_在node中执行python脚本

Node.js多进程基础

Node.js 是以单线程的模式运行的,但它使用的是事件驱动来处理并发。这样有助于我们在多核 cpu 的系统上创建多个子进程,从而提高性能。

每个子进程总是带有三个流对象:child.stdin, child.stdout 和child.stderr。他们可能会共享父进程的 stdio 流,或者也可以是独立的被导流的流对象。

Node提供了 child_process 模块来创建子进程,方法有:

exec-child_process.exec使用子进程执行命令,缓存子进程的输出,并将子进程的输出以回调函数的形式返回。

spawn-child_process.spawn使用指定的命令行参数创建进程。

fork-child_process.fork是spawn()的特殊形式,用于在子进程中运行模块,与spawn方法不同的是,fork会在父进程与子进程之间,建立一个通信管道,用于进程之间的通信。

1、exec() 方法

child_process.exec(command[, options], callback)

support.py 文件代码:

# -*- coding: utf-8 -*-

import sys

print("进程 " +sys.argv[1] +" 执行。")

master.js 文件代码:

const fs = require('fs');

const child_process = require('child_process');

for(var i=0; i<3; i++) {

//创建三个子进程

var workerProcess = child_process.exec('python support.py '+i, function (error, stdout, stderr) {

if (error) {

console.log(error.stack);

console.log('Error code: '+error.code);

console.log('Signal received: '+error.signal);

}

console.log('stdout: ' + stdout);

console.log('stderr: ' + stderr);

});

workerProcess.on('exit', function (code) {

console.log('子进程已退出,退出码 '+code);

});

}

b1dc42c152ab

2、spawn()方法

child_process.spawn(command[, args][, options])

support.py 文件代码:

# -*- coding: utf-8 -*-

import sys

print("进程 " +sys.argv[1] +" 执行。")

master.js 文件代码:

const fs = require('fs');

const child_process = require('child_process');

for(var i=0; i<3; i++) {

var workerProcess = child_process.spawn('python', ['support.py', i]);

workerProcess.stdout.on('data', function (data) {

console.log('stdout: ' + data);

});

workerProcess.stderr.on('data', function (data) {

console.log('stderr: ' + data);

});

workerProcess.on('close', function (code) {

console.log('子进程已退出,退出码 '+code);

});

}

b1dc42c152ab

3、fork()方法

child_process.fork(modulePath[, args][, options])

modulePath: String,将要在子进程中运行的模块

support.js 文件代码:

console.log("进程 " + process.argv[2] + " 执行。" );

master.js 文件代码:

const fs = require('fs');

const child_process = require('child_process');

for(var i=0; i<3; i++) {

var worker_process = child_process.fork("support.js", [i]);

worker_process.on('close', function (code) {

console.log('子进程已退出,退出码 ' + code);

});

}

b1dc42c152ab

node调用python

见上述1、exec()方法和spawn()方法。

比较exec和spawn

1、exec将子进程输出结果暂放在buffer中,在结果完全返回后,再将输出一次性的以回调函数返回。如果exec的buffer体积设置的不够大,它将会以一个“maxBuffer exceeded”错误失败告终。而spawn在子进程开始执行后,就不断的将数据从子进程返回给主进程,它没有回调函数,它通过流的方式发数据传给主进程,从而实现了多进程之间的数据交换。这个功能的直接用应用场景就是“系统监控”。

2、书写上,exec更方便一些,将整个命令放在第一个参数中,而spqwn需要拆分。

child_process.spawn('python', ['support.py', i])

child_process.exec('python support.py '+i, callback)

参考资料

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/529061.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

idea 自动生成mybaits_IDEA利用mybatis-generator自动生成dao和mapper

pom.xml配置1 2 1.83 1.3.74 5.1.465 1.1.96 1.3.27 89 10 11 org.springframework.boot12 spring-boot-starter-web13 1415 16 org.springframework.boot17 spring-boot-starter-test18 test19 20 21 org.junit.vintage22 junit-vintage-engine23 24 25 26 27 28 org.mybatis.…

计算机专业个人工作总结,年底个人工作总结计算机专业材料

《年底个人工作总结计算机专业材料.doc》由会员分享&#xff0c;可免费在线阅读全文&#xff0c;更多与《年底个人工作总结计算机专业材料》相关文档资源请在帮帮文库(www.woc88.com)数亿文档库存里搜索。1、定的进步,但我深知自己还存在些缺点和不足,理论基础还不扎实,业务知识…

docker配置 nacos_Nacos - 阿里开源配置中心

这里是喵了个咪的后端技术分享&#xff0c;觉得写的不错。点个赞&#xff0c;转发一下&#xff0c;关注一下。本文载于个人原创技术博客http://w-blog.cn&#xff0c;转载请注明出处&#xff0c;非法转载抄袭将追究其责任。配置中心相信大家都有听过&#xff0c;zookeeper、apo…

乐高机器人骨奥_乐高机器人这个大坑,为啥大家都拽着孩子往里跳?

上学期我们在美国经常凑一起玩的几家家长给自己挖了个大坑&#xff0c;因为孩子们平时都很喜欢玩乐高积木&#xff0c;而且年龄也差不多大刚升了四年级&#xff0c; 感觉是时候可以整点儿“大事”了&#xff0c;于是把他们动员起来组成了一个乐高机器人团队&#xff0c;还任命我…

微型计算机内存主要,微型计算机的内存容量主要指 ( ) 的容量 (7.0分)

【判断题】青藏高压又称南亚高压,是暖季出现在亚洲大陆南部青藏高原上空对流层顶部的大型暖高压系统。【问答题】电路如图 10 所示,已知: u i1 2V,u i2 1V ,计算电路中 u o1 、u o2 、u o3 、u o 的值。【问答题】您认为大学生阶段的学习生活主要由哪几个部分构成?【判断题】发…

jdbc获取mysql第二行表信息_【奇技淫巧】MySQL另类方法获取元数据信息

问&#xff1a;在进行MySQL注入时&#xff0c;我们通常是通过information_schema元数据来获取表名、字段名信息&#xff0c;从而读取相应数据。但是如果waf或其它过滤了information_schema关键字&#xff0c;那么还有什么方法可以读取元数据信息呢&#xff1f;答&#xff1a;从…

vscode使用sass_推荐7 个 极好用的VS Code 插件

你知道将高级开发人员与普通开发人员区分的条件是什么吗&#xff1f;没错&#xff0c;是所使用的工具&#xff0c;俗话说&#xff0c;"工欲善其事必先利其器"&#xff0c; 拥有正确的工作工具可以让开发人员的生活变得更加轻松&#xff0c;甚至想写一辈子代码。巧的的…

剑指offer python实现_剑指Offer第2题详解(附Python、Java代码实现)

题目描述 请实现一个函数&#xff0c;将一个字符串中的每个空格替换成“%20”。例如&#xff0c;当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。 这个题较为简单 1. Python实现 1.1 使用replace直接实现def replaceSpace(s): # return s.replace(" &…

挖掘城市ip_不断挖掘IP价值,紧抓乐园经济新机遇!

当一个国家的人均GDP达到5,000美元时&#xff0c;其旅游度假经济将进入成熟阶段。按照2018年末人口总数计算&#xff0c;我国人均GDP接近1万美元&#xff0c;近年来&#xff0c;越来越多的主题乐园落户中国。乐园的选址、运营有颇多讲究。对主题乐园而言&#xff0c;依托大中型…

pixel和毫米怎么换算_赶紧收藏!小学阶段所有公式、单位换算、数量关系

小学阶段会接触到很多公式&#xff0c;这些公式都是学习中必须要记忆的&#xff0c;笔者特意总结了小学一到六年级所有的公式、单位换算、数量关系、难题知识。孩子只要掌握了这四大知识重点&#xff0c;考试轻轻松松拿高分&#xff01;一、数量关系计算公式1、单价数量&#x…

相册权限_手机相册太乱?1分钟教你快速管理自己的照片,非常好用!

喜欢拍照的朋友们是不是有这样一个烦恼&#xff0c;那就是手机里拍了很多照片&#xff0c;当你想找某一张照片时你得在手机里翻半天&#xff0c;费时费力&#xff0c;那么今天我就来给大家解决这个烦恼&#xff0c;手机相册是手机中必不可少的&#xff0c;那当我们手机照片太多…

学校计算机数据采集处理系统,中学化学计算机数据采集处理系统实验室装备

中学化学计算机数据采集处理系统实验室装备配置方案一、基础型配置(31套&#xff1a;教师1套&#xff0c;学生30套(2学生/组&#xff0c;以每班60学生分组))&#xff0c;每套配置标准如下&#xff1a;序号 名称 型号1 数据采集器 SJ-SJCJQ2 南师大分析软件 NJSFDX-V33 电流传感…

python爬虫知识大全_Python爬虫入门有哪些基础知识点

1、什么是爬虫 爬虫&#xff0c;即网络爬虫&#xff0c;大家可以理解为在网络上爬行的一直蜘蛛&#xff0c;互联网就比作一张大网&#xff0c;而爬虫便是在这张网上爬来爬去的蜘蛛咯&#xff0c;如果它遇到资源&#xff0c;那么它就会抓取下来。想抓取什么&#xff1f;这个由你…

计算机中国象棋书籍,[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件...

[建议]中国的象棋永远不能被没有“思维”的电脑所代替(就目前的电脑象棋软件有感而发)先自我介绍一下&#xff0c;本人来自上海&#xff0c;师从原江苏省棋队教练言穆江大师&#xff0c;现年28岁&#xff0c;无任何值得自傲的成绩&#xff0c;但是我没有感到后悔&#xff0c;因…

dplayer js控制 自动全屏_Qt编写安防视频监控系统18-云台控制

一、前言云台控制是视频监控系统中必备的一个功能&#xff0c;对球机进行上下左右的移动&#xff0c;还有焦距的控制&#xff0c;其实核心就是控制XYZ三个坐标轴&#xff0c;为了开发这个模块&#xff0c;特意研究了各种云台控制的方法和开源库比如soap&#xff0c;有些厂家使用…

css不换行属性_那些不常见,但却非常实用的css属性(整理不易)

1、-webkit-line-clamp可以把 块容器 中的内容限制为指定的行数。并且在超过行数后&#xff0c;在最后一行显示"..."这是正常的展示display: -webkit-box; /*值必须为-webkit-box或者-webkit-inline-box*/ -webkit-box-orient: vertical; /*值必须为vertical*/ -webk…

计算机总是无法响应怎么办,电脑无响应是怎么回事 电脑无响应解决方法

电脑无响应是怎么回事?有时用户再操作过程中想在任务栏中切换窗口时&#xff0c;忽然发现点击任务栏中的图标没有任何反应了&#xff0c;就像系统死机一样&#xff0c;这就是Windows XP中常见的任务栏失去响应&#xff0c;又被称为“任务栏假死现象”。那么&#xff0c;如何唤…

2020身高体重标准表儿童_男女孩最新身高标准表,你家孩子达标了吗?(附增高秘籍)...

现在大家的生活水平提高了&#xff0c;和很多年前相比&#xff0c;孩子们的平均身高提高了不少&#xff0c;孩子能长成一个高个子&#xff0c;也是很多家长非常关注的事情。其实&#xff0c;要想孩子长高&#xff0c;除了营养要跟上以外&#xff0c;充足的睡眠、体重不要太胖都…

java 正则匹配_正则表达式真的很强大,可惜你不会写

专注于Java领域优质技术&#xff0c;欢迎关注本文旨在用最通俗的语言讲述最枯燥的基本知识文章提纲&#xff1a;元字符重复限定符分组转义条件或区间正则表达式在几乎所有语言中都可以使用&#xff0c;无论是前端的JavaScript、还是后端的Java、c#。他们都提供相应的接口/函数支…

河北大学计算机复试题,2016年河北大学综合卷计算机科学与技术学院之数据库系统概论复试笔试最后押题五套卷...

一、选择题1&#xff0e; 根据系统所提供的存取路径&#xff0c;选择合理的存取策略&#xff0c;这种优化方式称为( )。A. 物理优化B. 代数优化C. 规则优化D. 代价估算优化【答案】A【解析】物理优化是根据数据字典中的存取路径、数据的存储分布以及聚簇情况等信息来选择低层的…