想要利用CPU多核資源一Python中多進(jìn)程(一)
大綱
- 使用多進(jìn)程的原因
- 創(chuàng)建多進(jìn)程的兩種方式
- 守護(hù)進(jìn)程
使用多進(jìn)程的原因
由于python中的多線程無(wú)法利用多核優(yōu)勢(shì),如果想要利用CPU多核資源,需要使用多進(jìn)程。
創(chuàng)建多進(jìn)程
- Process([target [, args [, name [, kwargs]]]])
- # target 表示子進(jìn)程要執(zhí)行的任務(wù)
- # args 元組參數(shù)
- # kwargs 字典參數(shù)
- # name 表示子進(jìn)程的名稱(chēng)
- # 方式一
- import time
- from multiprocessing import Process
- def run(name):
- print('{0} 開(kāi)始跑步'.format(name))
- time.sleep(2)
- print('{0} 跑步結(jié)束'.format(name))
- p1 = Process(target=run, args=('小華', ))
- p2 = Process(target=run, args=('小米', ))
- p3 = Process(target=run, args=('小中', ))
- p1.start()
- p2.start()
- p3.start()
方式一演示結(jié)果
- # 方式二
- import time
- from multiprocessing import Process
- class Run(Process):
- def __init__(self, name):
- Process.__init__(self)
- self.name = name
- def run(self):
- print('{0} 開(kāi)始跑步'.format(name))
- time.sleep(2)
- print('{0} 跑步結(jié)束'.format(name))
- p1 = Run('小華')
- p2 = Run('小米')
- p3 = Run('小中')
- p1.start()
- p2.start()
- p3.start()
方式二演示結(jié)果
守護(hù)進(jìn)程
守護(hù)進(jìn)程會(huì)在主進(jìn)程代碼執(zhí)行結(jié)束后就終止。如果子進(jìn)程的任務(wù)在主進(jìn)程任務(wù)結(jié)束后就沒(méi)有存在的必要了,那么該子進(jìn)程應(yīng)該在開(kāi)啟前就被設(shè)置成守護(hù)進(jìn)程。主進(jìn)程代碼運(yùn)行結(jié)束,守護(hù)進(jìn)程隨即終止。

啟用time.sleep(3)和注釋后兩種結(jié)果演示