国产探花免费观看_亚洲丰满少妇自慰呻吟_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())

執行結果:

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 思南县| 宁化县| 神木县| 香河县| 理塘县| 修武县| 绿春县| 龙游县| 固原市| 晋城| 叶城县| 徐闻县| 呼图壁县| 贵定县| 福安市| 平阳县| 云龙县| 抚松县| 河南省| 电白县| 宣威市| 乡城县| 临潭县| 合江县| 沧源| 翁源县| 南溪县| 扬中市| 西乌珠穆沁旗| 宾川县| 横山县| 邹城市| 外汇| 汝城县| 安远县| 石林| 肇源县| 白水县| 正镶白旗| 兴和县| 交口县|