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.pswp.cn/news/529061.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/529061.shtml
英文地址,請注明出處:http://en.pswp.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【解析】物理優化是根據數據字典中的存取路徑、數據的存儲分布以及聚簇情況等信息來選擇低層的…