最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python中的多進(jìn)程的創(chuàng)建與啟動(dòng)方式

 更新時(shí)間:2022年12月01日 16:49:31   作者:小樹苗m  
這篇文章主要介紹了python中的多進(jìn)程的創(chuàng)建與啟動(dòng),python中的并發(fā)有三種形式,多進(jìn)程、多線程、協(xié)程,執(zhí)?并發(fā)任務(wù)的?的是為了提?程序運(yùn)?的效率,本文通過(guò)實(shí)例代碼詳細(xì)講解需要的朋友可以參考下

python中的并發(fā)有三種形式,多進(jìn)程、多線程、協(xié)程。執(zhí)?并發(fā)任務(wù)的?的是為了提?程序運(yùn)?的效率。

一、多進(jìn)程的創(chuàng)建:多進(jìn)程的創(chuàng)建方法有兩種:

1、通過(guò)Process創(chuàng)建多進(jìn)程 Process語(yǔ)法結(jié)構(gòu):

			Process(group, target, name, args, kwargs)
			group:指定進(jìn)程組,?多數(shù)情況下?不到
			target:表示調(diào)用對(duì)象,即子進(jìn)程要執(zhí)行的任務(wù)
			name:子進(jìn)程的名稱,可以不設(shè)定
			args:給target指定的函數(shù)傳遞的參數(shù),以元組的?式傳遞
			kwargs:給target指定的函數(shù)傳遞命名參數(shù)

Process常用方法:

			p.start() 啟動(dòng)進(jìn)程,并調(diào)用該子進(jìn)程中的p.run()方法
			p.join(timeout):主進(jìn)程等待?進(jìn)程執(zhí)?結(jié)束再結(jié)束,timeout是可選的超時(shí)時(shí)間
			is_alive():判斷進(jìn)程?進(jìn)程是否還存活
			p.run() 進(jìn)程啟動(dòng)時(shí)運(yùn)行的方法,正是它去調(diào)用target指定的函數(shù)
			p.terminate() ?即終??進(jìn)程

(1)首先,定義一個(gè)待調(diào)用的函數(shù):

import os
from multiprocessing import Process
def add(name,num):
    nums = 0
    for i in range(num+1):
        nums = nums+i
    print("用戶%s:\n  相加結(jié)果為:%s \n  當(dāng)前進(jìn)程id為:%s \n  當(dāng)前子進(jìn)程的父進(jìn)程id: %s"%(name,nums,os.getpid(),os.getppid()))

(2)創(chuàng)建并啟動(dòng)一個(gè)進(jìn)程

def test1():
    '''啟動(dòng)一個(gè)進(jìn)程調(diào)用'''
    name= '王五'
    p = Process(target=add,args=(name,10,))
    p.start()
    p.join()

其中,p.join()方法可以讓主進(jìn)程等待子進(jìn)程結(jié)束之后再結(jié)束,如果不加這個(gè)方法,主進(jìn)程結(jié)束,子進(jìn)程還沒(méi)有結(jié)束。
(2)創(chuàng)建并啟動(dòng)多個(gè)進(jìn)程

def test3():
    names = ['王五','趙六','王麻子']
    process_list=[]
    for name in names:
        p = Process(target=add,args=(name,10,))
        p.start()
        process_list.append(p)
    for j in process_list:
        j.join()

2、通過(guò)進(jìn)程池創(chuàng)建并啟動(dòng)多進(jìn)程

進(jìn)程池可以提供指定數(shù)量的進(jìn)程給用戶使用,即當(dāng)有新的請(qǐng)求提交到進(jìn)程池中時(shí),如果池未滿,則會(huì)創(chuàng)建一個(gè)新的進(jìn)程用來(lái)執(zhí)行該請(qǐng)求;反之,如果池中的進(jìn)程數(shù)已經(jīng)達(dá)到規(guī)定最大值,那么該請(qǐng)求就會(huì)等待,只要池中有進(jìn)程空閑下來(lái),該請(qǐng)求就能得到執(zhí)行。
Pool(numprocess, initializer, initargs)
numprocess 是要?jiǎng)?chuàng)建的進(jìn)程數(shù)。如果省略此參數(shù),默認(rèn)為cpu的最大核心數(shù)。
Initializer是每個(gè)工作進(jìn)程啟動(dòng)時(shí)要執(zhí)行的可調(diào)用對(duì)象。
Initargs 傳遞給 initializer 的參數(shù)元祖,默認(rèn)為 None

def test4():
    from multiprocessing import Pool
    '''啟動(dòng)多個(gè)進(jìn)程2:進(jìn)程池'''
    p = Pool(5)
    names = ['王五','趙六','王麻子']
    for name in names:
        p.apply_async(add,args=(name,10))
    p.close()
    p.join()

3、通過(guò)繼承的方法創(chuàng)建多進(jìn)程

(1)首先創(chuàng)建一個(gè)進(jìn)程

class SubProcess(Process):
    def __init__(self,name,number):
        super(SubProcess, self).__init__()
        self.name = name
        self.number = number
    def run(self):
        sums = 0
        for i in range(self.number):
            sums = sums+i
        print("用戶%s:\n  相加結(jié)果為:%s \n  當(dāng)前進(jìn)程id為:%s \n  當(dāng)前子進(jìn)程的父進(jìn)程id: %s"\
              %(self.name,self.number,os.getpid(),os.getppid()))

(2)啟動(dòng)一個(gè)進(jìn)程

def call_Sub0():
    '''啟動(dòng)一個(gè)進(jìn)程調(diào)用'''
    name = '張三'
    p = SubProcess(name,10)
    p.start()
    p.join()

(3)通過(guò)列表啟動(dòng)多個(gè)進(jìn)程

def call_Sub1():
    '''啟動(dòng)多個(gè)進(jìn)程1'''
    names = ['王五','趙六','王麻子']
    process_list=[]
    for name in names:
        p = SubProcess(name,10)
        p.start()
        process_list.append(p)
    for j in process_list:
        j.join()
 if __name__ == '__main__':
    print("當(dāng)前主進(jìn)程id:",os.getpid())
    call_Sub1()
    print("計(jì)算結(jié)束!")

4、進(jìn)程創(chuàng)建與啟動(dòng)完整代碼

import os
from multiprocessing import Process
def add(name,num):
    nums = 0
    for i in range(num+1):
        nums = nums+i
    print("用戶%s:\n  相加結(jié)果為:%s \n  當(dāng)前進(jìn)程id為:%s \n  當(dāng)前子進(jìn)程的父進(jìn)程id: %s"%(name,nums,os.getpid(),os.getppid()))
def test1():
    '''啟動(dòng)一個(gè)進(jìn)程調(diào)用'''
    name= '王五'
    p = Process(target=add,args=(name,10,))
    p.start()
    p.join()
def test3():
    '''啟動(dòng)多個(gè)進(jìn)程2'''
    names = ['王五','趙六','王麻子']
    process_list=[]
    for name in names:
        p = Process(target=add,args=(name,10,))
        p.start()
        process_list.append(p)
    for j in process_list:
        j.join()
'''
進(jìn)程池:可以提供指定數(shù)量的進(jìn)程給用戶使用,即當(dāng)有新的請(qǐng)求提交到進(jìn)程池中時(shí),
如果池未滿,則會(huì)創(chuàng)建一個(gè)新的進(jìn)程用來(lái)執(zhí)行該請(qǐng)求;反之,如果池中的進(jìn)程數(shù)已經(jīng)達(dá)到規(guī)定最大值,
那么該請(qǐng)求就會(huì)等待,只要池中有進(jìn)程空閑下來(lái),該請(qǐng)求就能得到執(zhí)行。
'''
def test4():
    from multiprocessing import Pool
    '''啟動(dòng)多個(gè)進(jìn)程2:進(jìn)程池'''
    p = Pool(5)
    names = ['王五','趙六','王麻子']
    for name in names:
        p.apply_async(add,args=(name,10))
    p.close()
    p.join()

class SubProcess(Process):
    def __init__(self,name,number):
        super(SubProcess, self).__init__()
        self.name = name
        self.number = number
    def run(self):
        sums = 0
        for i in range(self.number):
            sums = sums+i
        print("用戶%s:\n  相加結(jié)果為:%s \n  當(dāng)前進(jìn)程id為:%s \n  當(dāng)前子進(jìn)程的父進(jìn)程id: %s"\
              %(self.name,self.number,os.getpid(),os.getppid()))
def call_Sub0():
    '''啟動(dòng)一個(gè)進(jìn)程調(diào)用'''
    name = '張三'
    p = SubProcess(name,10)
    p.start()
    p.join()
def call_Sub1():
    '''啟動(dòng)多個(gè)進(jìn)程1'''
    names = ['王五','趙六','王麻子']
    process_list=[]
    for name in names:
        p = SubProcess(name,10)
        p.start()
        process_list.append(p)
    for j in process_list:
        j.join()

if __name__ == '__main__':
    print("當(dāng)前主進(jìn)程id:",os.getpid())
    call_Sub1()
    print("計(jì)算結(jié)束!")

到此這篇關(guān)于python中的多進(jìn)程的創(chuàng)建與啟動(dòng)的文章就介紹到這了,更多相關(guān)python多進(jìn)程創(chuàng)建與啟動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Python?tkinter庫(kù)圖形繪制例子分享

    Python?tkinter庫(kù)圖形繪制例子分享

    這篇文章主要介紹了?Python?tkinter庫(kù)圖形繪制例子,文章基于Python的相關(guān)資料展開主題,分享繪圖小例子,需要的小伙伴可以參考一下
    2022-04-04
  • Python中使用中文的方法

    Python中使用中文的方法

    python的中文問(wèn)題一直是困擾新手的頭疼問(wèn)題,這篇文章將給你詳細(xì)地講解一下這方面的知識(shí)。當(dāng)然,幾乎可以確定的是,在將來(lái)的版本中,python會(huì)徹底解決此問(wèn)題,不用我們這么麻煩了。
    2011-02-02
  • selenium?UI自動(dòng)化實(shí)戰(zhàn)過(guò)程記錄

    selenium?UI自動(dòng)化實(shí)戰(zhàn)過(guò)程記錄

    如果大家有做過(guò)web的自動(dòng)化測(cè)試,相信對(duì)于selenium一定不陌生,測(cè)試人員經(jīng)常使用它來(lái)進(jìn)行自動(dòng)化測(cè)試,下面這篇文章主要給大家介紹了關(guān)于selenium?UI自動(dòng)化實(shí)戰(zhàn)的相關(guān)資料,需要的朋友可以參考下
    2021-12-12
  • 詳解Python中的正斜杠與反斜杠

    詳解Python中的正斜杠與反斜杠

    這篇文章主要介紹了詳解Python中的正斜杠與反斜杠,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2019-08-08
  • Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))

    Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)的示例代碼(省市區(qū))

    多級(jí)菜單在很多上面都有應(yīng)用,這篇文章主要介紹了Django Admin實(shí)現(xiàn)三級(jí)聯(lián)動(dòng)(省市區(qū)),小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-06-06
  • Python ini文件常用操作方法解析

    Python ini文件常用操作方法解析

    這篇文章主要介紹了Python ini文件常用操作方法解析,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下
    2020-04-04
  • Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù)詳解

    Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù)詳解

    Python3對(duì)函數(shù)參數(shù)的排序規(guī)則更加通用化了,即Python3 keyword-only參數(shù),該參數(shù)即為必須只按照關(guān)鍵字傳遞而不會(huì)有一個(gè)位置參數(shù)來(lái)填充的參數(shù)。這篇文章主要介紹了Python函數(shù)參數(shù)匹配模型通用規(guī)則keyword-only參數(shù),需要的朋友可以參考下
    2019-06-06
  • 基于Python實(shí)現(xiàn)多人聊天室的示例代碼

    基于Python實(shí)現(xiàn)多人聊天室的示例代碼

    這篇文章主要為大家詳細(xì)介紹了如何基于Python實(shí)現(xiàn)多人聊天室功能,文中的示例代碼講解詳細(xì),具有一定的借鑒價(jià)值,有需要的小伙伴可以參考下
    2025-02-02
  • python Flask 裝飾器順序問(wèn)題解決

    python Flask 裝飾器順序問(wèn)題解決

    這篇文章主要介紹了python Flask 裝飾器順序問(wèn)題解決,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧
    2018-08-08
  • python集合能干嗎

    python集合能干嗎

    在本篇內(nèi)容中小編給各位分享了關(guān)于python集合的作用以及相關(guān)實(shí)例內(nèi)容,需要的朋友們可以學(xué)習(xí)參考下。
    2020-07-07

最新評(píng)論

铜山县| 广饶县| 康定县| 永德县| 宜宾市| 扶余县| 谢通门县| 镇康县| 淳安县| 商洛市| 来安县| 剑川县| 长治市| 翁牛特旗| 平利县| 佛山市| 自贡市| 定襄县| 稷山县| 华坪县| 平安县| 福贡县| 乐平市| 富蕴县| 汝城县| 绥宁县| 房产| 辛集市| 千阳县| 巨鹿县| 简阳市| 乌拉特后旗| 博乐市| 本溪市| 鹰潭市| 饶阳县| 孝感市| 东丽区| 曲沃县| 察哈| 突泉县|