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,一经查实,立即删除!

相关文章

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

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

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;甚至想写一辈子代码。巧的的…

挖掘城市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 电流传感…

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…

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

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

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

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

石板切割问题c语言_广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪...

广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪广场地面铺装 仿古石 青石板 板岩 切割岩 冰裂纹压印混凝土地坪青石板是由青色的沉积岩劈制或者切割而成的板材&#xff0c;是天然板岩的一种&#xff0c;主要成分为石灰石、白云石。其比重约2.2~2.7克/立方厘米&a…

python分析工具有哪些_常用Python数据分析工具汇总

Python是数据处理常用工具&#xff0c;可以处理数量级从几K至几T不等的数据&#xff0c;具有较高的开发效率和可维护性&#xff0c;还具有较强的通用性和跨平台性。Python可用于数据分析&#xff0c;但其单纯依赖Python本身自带的库进行数据分析还是具有一定的局限性的&#xf…

高并发编程_高并发编程系列:全面剖析Java并发编程之AQS的核心实现

在并发编程领域&#xff0c;AQS号称是并发同步组件的基石&#xff0c;很多并发同步组件都是基于AQS实现&#xff0c;所以想掌握好高并发编程&#xff0c;你需要掌握好AQS。本篇主要通过对AQS的实现原理、数据模型、资源共享方式、获取锁的过程&#xff0c;让你对AQS的整体设计有…

计算机考试设计会议邀请函,计算机二级常见考点之使用合并技术制作邀请函

计算机01:37来自LearningYard学苑三月份的计算机二级考试即将到来&#xff0c;不知道各位童鞋准备得怎么样了呢&#xff0c;把握了多少。今天小编就给讲讲计算机二级MS office中常见的考核内容——使用合并技术制作邀请函。The computer second-level exam in March is coming …

添加一列_办公软件操作技巧023:如何给excel数据批量添加单位

在日常工作中&#xff0c;我们使用excel编辑电子表格时&#xff0c;经常需要给数据添加单位&#xff0c;单位是编制excel表格常用的元素&#xff0c;有时我们需要给一列数字都添加上单位&#xff0c;比如长度多少米&#xff0c;金额多少元&#xff0c;货物多少公斤等等&#xf…

html代码大全(很全的)_HTML教学(1):写一个属于自己的网址大全(新手版)

超文本标记语言&#xff08;Hyper Text Markup Language&#xff09;&#xff0c;缩写为HTML&#xff0c;标准通用标记语言下的一个应用。HTML不是一种编程语言&#xff0c;而是一种标记语言 &#xff08;markup language&#xff09;只要你打开浏览器&#xff0c;第一眼看到的…

清华大学计算机系高考生源,清华大学在这个高考大省录取人数创新高,网友:仍然是同分不同命...

在众多高考学子眼中&#xff0c;只有“两个学校”&#xff0c;一个是“清华、北大”&#xff0c;一个是“其他学校”&#xff0c;不仅是高考学子&#xff0c;清华、北大在众多人心目中也是十分神圣的。很多学生家长把考上清华、北大作为子女的唯一追求&#xff0c;认为只有考上…

list的contains方法为什么不好使_道理都懂,为什么我们还打不好网球?

中年人的悲哀在于&#xff0c;懂得很多道理&#xff0c;可依然过不好自己的一生。打网球亦是如此。——题记人到中年&#xff0c;有了一定的社会经验&#xff0c;也懂得了很多道理&#xff0c;可大部分人还是过不好自己的生活。正如打网球一样。盯准球、早点打、降低重心、保持…

html5登录界面源代码_最新版本尤娜博客已更新源代码(速拿!!!)

大家好&#xff0c;我是尤娜博客(una-boot)的作者树下魅狐&#xff0c;自2019年9月una-boot-1.0.0版本开源以来&#xff0c;陆续有热爱技术&#xff0c;钟爱技术写作的小伙伴为尤娜提出了宝贵的改进意见和建议&#xff0c;在此表示衷心的感谢&#xff0c;谢谢大家的支持&#x…