iT邦幫忙

4

【我可以你也可以的Node.js】第四篇 - 進程、行程、過程、行程、程序、處理程序、Process

進程、行程、過程、行程、程序、處理程序
都是指Process
嗯所以我說...
難道不能統一 一下嗎?ლ(╹◡╹ლ)
不行!不可以!休想!╭∩╮( ͡⚆ ͜ʖ ͡⚆)╭∩╮

但是我下面都會統一用Process來說 xDD

註:╭∩╮ : 是指手指頭,並非其他事物。


Hi 各位大大,
我是Robin (,,・ω・,,)
這篇來記錄和分享一下我在學習Node中的Process
一開始看得時候總覺得是個非常麻煩的東西QQ
實際上...

哈哈哈哈哈(*゚∀゚*)
哈哈哈(゚∀゚)
哈...(´・ω・`)
嗚嗚嗚嗚嗚இдஇ

如果有看一遍解決不了的東西!ヽ(́◕◞౪◟◕‵)ノ
那就看兩遍!( ゚∀゚)o彡゚
如果兩遍還看不懂!(((゚Д゚;)))
那就放棄(´,,•ω•,,)♡

這篇主要學習目標(゚∀。)

  1. Process 是什麼它能幹嘛?σ ゚∀ ゚) ゚∀゚)σ
  2. Process 入門攻略( ゚∀゚) ノ♡

Process 是什麼它能幹嘛?σ ゚∀ ゚) ゚∀゚)σ

都講到Process了,就順帶提一下跟他非常有關係的ProgramThread
經過我認真又隨便的研究,以我的觀察來看(完全不附帶任何責任)
我們以簡單粗暴的大概認識一下(越粗暴我越愛

Program = 我們寫的Code(還沒被執行)=> 存在硬碟(Rom)
Process = 我們寫的Code (已經被執行且並已載入到記憶體)=> 存在記憶體(Ram)
Thread = Process的執行單位(Process 是 Thread 的容器)=>存在Process

好了~為了怕模糊焦點我們不要那麼深入探討這個
絕對不是我不懂或是我懶惰喔!
如果有大大要補充我也是非常願意copy paste 在文章內的唷xDD

來專注在Process吧!
列出以下我看到的Process是什麼他能幹嘛?

  1. Process是Node中的一個全域變數(如果不知道什麼是全域變數可以看上一篇),
  2. 他可以直接使用也可以使用require來使用
    const process = require('process');
  3. 讀:獲取程序資訊
    寫:執行程序操作
    From Node.js process模組解讀

嗯看起來最蛋疼的就是第三點

Process 入門攻略( ゚∀゚) ノ♡

為什麼說是入門?
因為如果全部寫完我大概主題會改為 => 從入門到放棄的NodeJs (´≖◞౪◟≖)
我們就來了解上述說的

讀:獲取程序資訊
寫:執行程序操作

注意: 下面列舉的內容只是"部分",
有興趣可以看一下官方process的API document。

獲取程序資訊

這邊感覺就是需要再查也可以的部分,我覺得不用特別記。
單純稍微看一下搞不好哪天想到有需要可以直接知道在process就可以get 到了

獲取Process所消耗的記憶體

process.memoryUsage())
{
  rss: 21590016,      // 總共佔用的記憶體
  heapTotal: 4251648, // V8引擎總共使用的記憶體
  heapUsed: 2161344,  // V8引擎目前使用的記憶體
  external: 680685    // 管理V8的記憶體
}

獲取處理user和system的CPU所需時間

process.cpuUsage()
{ 
    user: 33426,  
    system: 11480 
}

獲取PID資訊

目前我不知道這個要拿來幹嘛@@
也許是打開工作管理員可以早點找到他?
或是拿取pid 在某些情境可以砍掉(?)

process.pid
<PID>

獲取目前程式執行目錄(我覺得實用)

實用原因是假使,今天要執行某module,可是在不同的資料夾而且有很多層
使用相對路徑可能會有很多層例如=> ../../../../module/<module>
這時候用這個就滿方便的。

process.cwd()
/Users/robinzhang/nodeLearning

Node執行目錄(感覺會用到)

這個跟上面那個差異在
一個是程式執行的位置
一個是Node的資源位置

process.execPath
/usr/local/bin/node

獲取CPU架構

如果朋友不知道他電腦是幾位元的時候你可以包一個這隻程式,就可以馬上知道(?)
還可以裝逼

process.arch
x64 //or x86

執行程序操作

我覺得這部分可能是process模組最大需要理解的,
感覺要深入玩這個不可以不知道的感覺。
我的推測啦xD
這部分我覺得必須知道什麼是EventLoopEventEmiiter
之後理論上再分享我看起來的EventLoopEventEmiiter
這部分....我非常抱歉~我下篇再講
實際原因不是因為這週看太多冰與火之歌
也不是因為Netflix太好看
是因為個人私事太多
先說聲抱歉Orz

本篇心得

我發現我到現在的處境很像是剛入門的學徒
如果我是要學著當廚師的人,我現在就在洗碗

如果我是要學著當黑手的人,我現在就在換機油

這些比較枯燥乏味的東西,
說實話學的真的是不知道什麼時候會用到Orz
但是我相信這都是Node給我的考驗
絕對不是廚師懶得洗碗,師傅懶得幫客人換機油。
沒錯!
都是考驗!
應該吧

不管如何都是因為以前太混所以我很多東西都不懂啦QQ
俗話說的好

蹲得越低,腳越酸。

我會努力的
感謝大大的觀看

參考文獻

Banner設計
Node.js process模組解讀
process Node.js API
Program/Process/Thread 差異
JavaScript 运行机制详解:再谈Event Loop


尚未有邦友留言

立即登入留言