python如何通過(guò)pid獲取進(jìn)程信息 python的process函數(shù)是什么類型?
python的process函數(shù)是什么類型?進(jìn)程Process是對(duì)各種資源管理的集合,包含對(duì)各種資源的調(diào)用、內(nèi)存的管理、網(wǎng)絡(luò)接口的調(diào)用;一個(gè)進(jìn)程Process可以包含多個(gè)子進(jìn)程,啟動(dòng)一個(gè)進(jìn)程的時(shí)候會(huì)自
python的process函數(shù)是什么類型?
進(jìn)程Process是對(duì)各種資源管理的集合,包含對(duì)各種資源的調(diào)用、內(nèi)存的管理、網(wǎng)絡(luò)接口的調(diào)用;一個(gè)進(jìn)程Process可以包含多個(gè)子進(jìn)程,啟動(dòng)一個(gè)進(jìn)程的時(shí)候會(huì)自動(dòng)創(chuàng)建一個(gè)線程,進(jìn)程里的第一個(gè)線程就是主線程(即python __name__ ‘__main__#39);
進(jìn)程Process模塊
對(duì)于線程操作可以用threading模塊,那么對(duì)于進(jìn)程的創(chuàng)建python同樣也提供了Process模塊,創(chuàng)建進(jìn)程時(shí)需要導(dǎo)入該模塊,語(yǔ)法如下:
# 導(dǎo)入進(jìn)程模塊
from multiprocessing import Process
# 創(chuàng)建進(jìn)程
p Process(groupNone, targetNone, nameNone, args(), kwargs{})
參數(shù)介紹:
group — 參數(shù)未使用,默認(rèn)值為None;
target — 表示調(diào)用對(duì)象,即子進(jìn)程要執(zhí)行的任務(wù)(函數(shù)名字);
args — 子進(jìn)程對(duì)應(yīng)函數(shù)的參數(shù),并且類型是元組tuple;
kwargs — 子進(jìn)程對(duì)應(yīng)函數(shù)的參數(shù),并且類型是字典dict,如kwargs {‘nam:Jack, ‘a(chǎn)g:18};
name — 子進(jìn)程名稱;
返回值:返回進(jìn)程實(shí)例對(duì)象
三.進(jìn)程Process函數(shù)介紹
其實(shí)進(jìn)程Process的函數(shù)和線程threading類似,具體如下:
() — 啟動(dòng)進(jìn)程;
2.terminate() — 強(qiáng)制終止進(jìn)程,不會(huì)進(jìn)行任何清理操作。如果該進(jìn)程終止前,創(chuàng)建了子進(jìn)程,那么該子進(jìn)程在其強(qiáng)制結(jié)束后變?yōu)榻┦M(jìn)程;如果該進(jìn)程還保存了一個(gè)鎖那么也將不會(huì)被釋放,進(jìn)而導(dǎo)致死鎖,使用時(shí),要注意;
_alive() — 判斷某進(jìn)程是否存活,存活返回True,否則False;
([timeout]) — 主線程等待子線程終止。timeout為可選擇超時(shí)時(shí)間;需要強(qiáng)調(diào)的是,只能join住start開啟的進(jìn)程,而不能join住run開啟的進(jìn)程 ;
5.daemon — 默認(rèn)值為False,如果設(shè)置為True,代表該進(jìn)程為后臺(tái)守護(hù)進(jìn)程;當(dāng)該進(jìn)程的父進(jìn)程終止時(shí),該進(jìn)程也隨之終止;并且設(shè)置為True后,該進(jìn)程不能創(chuàng)建子進(jìn)程,設(shè)置該屬性必須在start()之前;
— 進(jìn)程名稱;
— 進(jìn)程ID標(biāo)識(shí),pid,值得注意的是:如果在start函數(shù)之前獲取pid默認(rèn)為None,因?yàn)檫M(jìn)程還未創(chuàng)建,獲取不到pid;
8.exitcod
什么是運(yùn)動(dòng)控制算法?
機(jī)器人的算法分為感知算法和控制算法,更進(jìn)一步細(xì)分為環(huán)境感知算法 ,路徑規(guī)劃和行為決策算法(ai),運(yùn)動(dòng)控制算法,后兩個(gè)也可以統(tǒng)稱為控制算法。
環(huán)境感知算法獲取環(huán)境各種數(shù)據(jù)(機(jī)器人視覺和圖像識(shí)別),定位機(jī)器人的方位(slam),對(duì)于固定工位的機(jī)器人來(lái)說(shuō),環(huán)境感知算法往往不是必須的,但是,對(duì)于另一類機(jī)器人來(lái)說(shuō),比如掃地機(jī)器人,基本就是一個(gè)slam算法,行為決策和運(yùn)動(dòng)控制算法及其簡(jiǎn)單可以忽略。
機(jī)器人自身的運(yùn)動(dòng)控制算法是機(jī)器人制造廠家的研發(fā)重點(diǎn),主要就是提高機(jī)器人行動(dòng)的精度,穩(wěn)定性和速度,這個(gè)一半靠pid伺服電機(jī),一半靠控制算法,同樣性能的pid伺服電機(jī),好的控制算法能提高精度10倍以上,硬件反而不是難度所在,因?yàn)槿澜绲臋C(jī)器人廠家都是買同樣的芯片和硬件電路;
總體來(lái)說(shuō),環(huán)境感知算法和運(yùn)動(dòng)控制算法是比較成熟的,也是整個(gè)機(jī)器人研究領(lǐng)域投入人力最多的,不斷對(duì)現(xiàn)有的算法進(jìn)行改進(jìn)優(yōu)化,一是因?yàn)檠芯恳呀?jīng)獲得突破,跟進(jìn)的團(tuán)隊(duì)就多,二是因?yàn)?0%的機(jī)器人應(yīng)用領(lǐng)域,只需要用到這兩種算法甚至只用到其中一種,行為決策算法非常簡(jiǎn)單,就是重復(fù)一個(gè)或幾個(gè)簡(jiǎn)單動(dòng)作;
行為決策算法或行為控制策略則是機(jī)器人應(yīng)用領(lǐng)域的未突破的研發(fā)重點(diǎn)(不用的應(yīng)用領(lǐng)域算法也不同,當(dāng)然,也可以完全由人來(lái)手動(dòng)控制,我們常說(shuō)的人工智能,狹義點(diǎn)就是指這個(gè)模塊),這里不是指那些簡(jiǎn)單的行為算法,比如重復(fù)動(dòng)作,機(jī)器人按固定動(dòng)作跳舞,無(wú)障礙或固定障礙路線行走等,這些主要是硬編碼實(shí)現(xiàn),不涉及到ai,復(fù)雜的行為決策算法主要有fsm,層次分析法,決策樹,模糊邏輯,遺傳算法ga,人工神經(jīng)網(wǎng)絡(luò)ann,以及針對(duì)具體問題的特定算法,比如路徑規(guī)劃等(ros里面提供了一個(gè)move-base模塊,實(shí)現(xiàn)了很多路徑規(guī)劃算法),一般都用c/c 混合python來(lái)編程行為決策算法里,有解決的不錯(cuò)的,比如導(dǎo)航路徑規(guī)劃算法,也有難度極大的,比如避障算法,幾乎所有的無(wú)人駕駛和自動(dòng)駕駛研發(fā)團(tuán)隊(duì)都在苦苦思索避障算法,其實(shí),避障算法的應(yīng)用途廣泛,在很多領(lǐng)域也有應(yīng)用,比如無(wú)人機(jī)。避障算法是整個(gè)無(wú)人駕駛和自動(dòng)駕駛行業(yè)的絆腳石,因?yàn)樗鼪Q定了最后1%的安全性,而現(xiàn)有的vfh和dwa避障算法只能算是非常原始的起步,根本無(wú)法滿足實(shí)際需求。