国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python實現多進程代碼示例

2020-02-15 23:29:11
字體:
來源:轉載
供稿:網友

想要充分利用多核CPU資源,Python中大部分情況下都需要使用多進程,Python中提供了multiprocessing這個包實現多進程。multiprocessing支持子進程、進程間的同步與通信,提供了Process、Queue、Pipe、Lock等組件。

開辟子進程

multiprocessing中提供了Process類來生成進程實例

Process([group [, target [, name [, args [, kwargs]]]]])

group分組,實際上不使用 target表示調用對象,你可以傳入方法的名字 args表示給調用對象以元組的形式提供參數,比如target是函數a,他有兩個參數m,n,那么該參數為args=(m, n)即可 kwargs表示調用對象的字典 name是別名,相當于給這個進程取一個名字

先來個小例子:

# -*- coding:utf-8 -*-from multiprocessing import Process, Poolimport osimport timedef run_proc(wTime):  n = 0  while n < 3:    print "subProcess %s run," % os.getpid(), "{0}".format(time.ctime())  #獲取當前進程號和正在運行是的時間    time.sleep(wTime)  #等待(休眠)    n += 1if __name__ == "__main__":  p = Process(target=run_proc, args=(2,)) #申請子進程  p.start()   #運行進程  print "Parent process run. subProcess is ", p.pid  print "Parent process end,{0}".format(time.ctime())

運行結果:

Parent process run. subProcess is 30196
Parent process end,Mon Mar 27 11:20:21 2017
subProcess 30196 run, Mon Mar 27 11:20:21 2017
subProcess 30196 run, Mon Mar 27 11:20:23 2017
subProcess 30196 run, Mon Mar 27 11:20:25 2017

根據運行結果可知,父進程運行結束后子進程仍然還在運行,這可能造成僵尸( zombie)進程。

通常情況下,當子進程終結時,它會通知父進程,清空自己所占據的內存,并在內核里留下自己的退出信息。父進程在得知子進程終結時,會從內核中取出子進程的退出信息。但是,如果父進程早于子進程終結,這可能造成子進程的退出信息滯留在內核中,子進程成為僵尸(zombie)進程。當大量僵尸進程積累時,內存空間會被擠占。

有什么辦法可以避免僵尸進程呢?

這里介紹進程的一個屬性 deamon,當其值為TRUE時,其父進程結束,該進程也直接終止運行(即使還沒運行完)。
所以給上面的程序加上p.deamon = true,看看效果。

# -*- coding:utf-8 -*-from multiprocessing import Process, Poolimport osimport timedef run_proc(wTime):  n = 0  while n < 3:    print "subProcess %s run," % os.getpid(), "{0}".format(time.ctime())    time.sleep(wTime)    n += 1if __name__ == "__main__":  p = Process(target=run_proc, args=(2,))  p.daemon = True  #加入daemon  p.start()  print "Parent process run. subProcess is ", p.pid  print "Parent process end,{0}".format(time.ctime())

執行結果:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 潜山县| 东兰县| 济宁市| 佛冈县| 唐海县| 凤翔县| 县级市| 沂水县| 南京市| 雷山县| 新龙县| 大城县| 大余县| 四平市| 高雄县| 玉门市| 聂荣县| 达拉特旗| 固镇县| 丹寨县| 华容县| 沛县| 阿图什市| 永平县| 闽侯县| 航空| 休宁县| 三门峡市| 上高县| 临高县| 喜德县| 高州市| 台湾省| 精河县| 溧阳市| 元朗区| 宁城县| 兴化市| 宁晋县| 阜新市| 晋江市|