nginx伺服器會把自己的每個worker程序繫結到乙個cpu上,以期減少程序間切換所帶來的開銷,最大限度利用多核框架。在實現上,使用linux的sched_setaffinity()這個函式來實現。第三方庫affinity封裝了該函式,使得我們可以將python的程序繫結到指定的cpu上。
用法非常簡單
如果你的機器不是多核的,也就沒有必要這麼設定了,畢竟只有乙個cpu。那麼如何知道自己的機器有幾顆cpu呢?affinity.get_process_affinity_mask(pid) #檢視pid這個程序用了哪乙個cpu
affinity.set_process_affinity_mask(pid, 2l) #設定pid在2這個程序上執行
psutil開源庫,可以獲取系統狀態,通過它可以知曉機器的cpu個數#coding=utf-8
import psutil
p = psutil.process()
pro_info = p.as_dict(attrs=['pid', 'name', 'username'])
print psutil.cpu_count()
Linux 的程序操作(執行程序)
如果需要在子程序中執行一些自定義的動作,則需要呼叫 exec 函式族。當程序呼叫 exec 系列函式的時候,該程序執行的程式被立即替換為新的程式,而新程式則從 main 函式開始執行,並立刻替換掉了當前程序的正文段 資料段 堆和堆疊,需要注意的是其程序識別符號和程序描述符是不會改變的。exec 函式...
ubuntu後台執行程序
最近在azure上搭乙個基於web.py的web service,由於是用putty去ssh伺服器,在server上把web.py啟動以後,回到寢室由於pc睡眠,putty連線inactive,導致web service無法正常訪問。正常啟動web service python test.py 88...
使用procd執行程序
在openwrt系統內init程序被procd取代,procd作為父程序可以監控子程序的狀態。一旦子程序退出後即可在某乙個時刻嘗試進行重啟程序。在op系統內使用procd監控的有uhttpd,netifd等。在 etc init.d 資料夾內帶有use procd 1標誌,下面就介紹如何讓procd...