對(duì)Python中創(chuàng)建進(jìn)程的兩種方式以及進(jìn)程池詳解
在Python中創(chuàng)建進(jìn)程有兩種方式,第一種是:
from multiprocessing import Process
import time
def test():
while True:
print('---test---')
time.sleep(1)
if __name__ == '__main__':
p=Process(target=test)
p.start()
while True:
print('---main---')
time.sleep(1)上面這段代碼是在windows下跑的,通過Process類可以創(chuàng)建一個(gè)進(jìn)程對(duì)象,然后p.start()即可開啟進(jìn)程,test函數(shù)是你想進(jìn)程實(shí)現(xiàn)的功能。
第二種方式是:
from multiprocessing import Process
import time
class MyNewProcess(Process):
def run(self):
while True:
print('---1---')
time.sleep(1)
if __name__=='__mian__':
p = MyNewProcess()
# 調(diào)用p.start()方法,p會(huì)先去父類中尋找start(),然后在Process的start方法中調(diào)用run方法
p.start()
while True:
print('---Main---')
time.sleep(1)這里是第二種創(chuàng)建進(jìn)程的方式,通過子類繼承Process類,子類中必須有run方法,里面實(shí)現(xiàn)進(jìn)程功能,創(chuàng)建子類對(duì)象之后,調(diào)用對(duì)象的start方法。
下面來說一下進(jìn)程池,就是實(shí)現(xiàn)已經(jīng)創(chuàng)建好的進(jìn)程
# 進(jìn)程池
from multiprocessing import Pool
import os
import random
import time
def worker(num):
for i in range(5):
print('===pid=%d==num=%d='%(os.getpid(),num))
time.sleep(1)
# 3表示進(jìn)程池中最多有三個(gè)進(jìn)程一起執(zhí)行
pool=Pool(3)
for i in range(10):
print('---%d---'%i)
# 向進(jìn)程中添加任務(wù)
# 注意:如果添加的任務(wù)數(shù)量超過了進(jìn)程池中進(jìn)程的個(gè)數(shù)的話,那么就不會(huì)接著往進(jìn)程池中添加,如果還沒有執(zhí)行的話,他會(huì)等待前面的進(jìn)程結(jié)束,然后在往
# 進(jìn)程池中添加新進(jìn)程
pool.apply_async(worker,(i,))
pool.close() # 關(guān)閉進(jìn)程池
pool.join() # 主進(jìn)程在這里等待,只有子進(jìn)程全部結(jié)束之后,在會(huì)開啟主線程大家可以看到在Pool方法就是創(chuàng)建了一個(gè)進(jìn)程池,3表示創(chuàng)建進(jìn)程數(shù),通過pool.apply_async( )將子進(jìn)程添加到進(jìn)程池中,pool.close( )表示關(guān)閉進(jìn)程池,一定要添加join函數(shù),否則主進(jìn)程直接崩了,看不到進(jìn)程池中子進(jìn)程的現(xiàn)象。
以上這篇對(duì)Python中創(chuàng)建進(jìn)程的兩種方式以及進(jìn)程池詳解就是小編分享給大家的全部內(nèi)容了,希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
Python抓取聚劃算商品分析頁面獲取商品信息并以XML格式保存到本地
這篇文章主要為大家詳細(xì)介紹了Python抓取聚劃算商品分析頁面獲取商品信息,并以XML格式保存到本地的方法,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-02-02
Python+eval函數(shù)實(shí)現(xiàn)動(dòng)態(tài)地計(jì)算數(shù)學(xué)表達(dá)式詳解
Python的 eval() 允許從基于字符串或基于編譯代碼的輸入中計(jì)算任意Python表達(dá)式。當(dāng)從字符串或編譯后的代碼對(duì)象的任何輸入中動(dòng)態(tài)計(jì)算Python表達(dá)式時(shí),此函數(shù)非常方便。本文將利用eval實(shí)現(xiàn)動(dòng)態(tài)地計(jì)算數(shù)學(xué)表達(dá)式,需要的可以參考一下2022-09-09
Python+Pygame實(shí)現(xiàn)簡單的射擊小游戲
要說什么游戲能夠獲得大家的喜愛,唯射擊游戲莫屬!本文將利用Python和Pygame庫制作一個(gè)簡單的射擊小游戲,感興趣的小伙伴可以了解一下2022-04-04
python實(shí)現(xiàn)文件快照加密保護(hù)的方法
這篇文章主要介紹了python實(shí)現(xiàn)文件快照加密保護(hù)的方法,涉及Python文件加密的技巧,可有效防止文件被篡改,需要的朋友可以參考下2015-06-06
Python實(shí)現(xiàn)快速計(jì)算詞頻功能示例
這篇文章主要介紹了Python實(shí)現(xiàn)快速計(jì)算詞頻功能,結(jié)合實(shí)例形式總結(jié)分析了Python使用nltk庫進(jìn)行詞頻計(jì)算功能的相關(guān)操作技巧,需要的朋友可以參考下2018-06-06
利用python在excel里面直接使用sql函數(shù)的方法
今天小編就為大家分享一篇利用python在excel里面直接使用sql函數(shù)的方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧2019-02-02

