成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專(zhuān)欄INFORMATION COLUMN

Python進(jìn)程專(zhuān)題2:multiprocessing創(chuàng)建進(jìn)程

騫諱護(hù) / 3249人閱讀

摘要:類(lèi)常用屬性布爾值,指示進(jìn)程是否是后臺(tái)進(jìn)程。當(dāng)創(chuàng)建它的進(jìn)程終止時(shí),后臺(tái)進(jìn)程會(huì)自動(dòng)終止。進(jìn)程的整數(shù)退出指令。如果進(jìn)程仍然在運(yùn)行,它的值為,如果值為負(fù)數(shù),就表示進(jìn)程由信號(hào)所終止。

上一篇文章:Python進(jìn)程專(zhuān)題1:fork():創(chuàng)建子進(jìn)程、getpid()、getppid()
下一篇文章:Python進(jìn)程專(zhuān)題3:繼承Process來(lái)創(chuàng)建進(jìn)程

由于fork()無(wú)法對(duì)Windows使用,而python是跨平臺(tái)的,顯然需要一個(gè)新的跨平臺(tái)替代品來(lái)代替它,那就是multiprocessing模塊。

multiprocessing模塊中使用Process類(lèi)來(lái)代表進(jìn)程。

語(yǔ)法:Process([group,target,name,args,kwargs])
group:至今還未使用,值始終為None
target:進(jìn)程實(shí)例所調(diào)用的對(duì)象,一般表示子進(jìn)程要調(diào)用的函數(shù)。
args:表示調(diào)用對(duì)象的參數(shù),一般是函數(shù)的參數(shù)
kwargs:表示調(diào)用對(duì)象的關(guān)鍵字參數(shù)字典。
name:當(dāng)前進(jìn)程實(shí)例的別名

Process類(lèi)常用方法:

p.is_alive():判斷進(jìn)程是否還在運(yùn)行。如果還在運(yùn)行,返回true,否則返回false
p.join([timeout]):等待進(jìn)程實(shí)例執(zhí)行完畢,或等待多少秒
p.run():默認(rèn)會(huì)調(diào)用target指定的對(duì)象,如果沒(méi)有給定target參數(shù),對(duì)該進(jìn)程對(duì)象調(diào)用start()方法時(shí),就會(huì)執(zhí)行對(duì)象中的run()方法
p.start():啟動(dòng)進(jìn)程實(shí)例(創(chuàng)建子進(jìn)程),病運(yùn)行子進(jìn)城的run方法
p.terminate():不管任務(wù)是否完成,立即終止,同時(shí)不會(huì)進(jìn)行任何的清理工作,如果進(jìn)程p創(chuàng)建了它自己的子進(jìn)程,這些進(jìn)程就會(huì)
變成僵尸進(jìn)程,使用時(shí)特別注意,如果p保存了一個(gè)鎖或者參與了進(jìn)程間通信,那么使用該方法終止它可能會(huì)導(dǎo)致死鎖或者I/O損壞。

Process類(lèi)常用屬性:

p.daemon:布爾值,指示進(jìn)程是否是后臺(tái)進(jìn)程。當(dāng)創(chuàng)建它的進(jìn)程終止時(shí),后臺(tái)進(jìn)程會(huì)自動(dòng)終止。并且,后臺(tái)進(jìn)程無(wú)法創(chuàng)建自己的新進(jìn)城。
注意:p.daemon的值必須在p.start方法調(diào)用前設(shè)置。
p.exitcode:進(jìn)程的整數(shù)退出指令。如果進(jìn)程仍然在運(yùn)行,它的值為None,如果值為負(fù)數(shù):—N,就表示進(jìn)程由信號(hào)N所終止。
p.name:當(dāng)前進(jìn)程實(shí)例別名,默認(rèn)為Process-N,N為從1開(kāi)始遞增的整數(shù)。
p.pid:當(dāng)前進(jìn)程實(shí)例的PID

實(shí)例1:理解多帶帶創(chuàng)建進(jìn)程的相關(guān)函數(shù)

#該實(shí)例是用來(lái)理解多帶帶創(chuàng)建進(jìn)程的實(shí)例
from multiprocessing import Process
import os,time

#將要在子進(jìn)程中運(yùn)行的方法
def test(name,interval):
    for i in range(interval):
        print("子進(jìn)程運(yùn)行中,name=%s,pid=%d,父進(jìn)程:%d"%(name,os.getpid(),os.getppid()))
        time.sleep(interval)

if __name__=="__main__":
    print("父進(jìn)程%d"%os.getpid())
    #創(chuàng)建進(jìn)程實(shí)例,第一個(gè)參數(shù)傳要在子線(xiàn)程執(zhí)行的函數(shù),第二個(gè)參數(shù)傳函數(shù)需要的參數(shù)
    p=Process(target=test,args=("mark",2))
    print("子進(jìn)程要執(zhí)行了")
    #啟動(dòng)進(jìn)程
    p.start()
    p.join()#等待子進(jìn)程運(yùn)行結(jié)束再繼續(xù)執(zhí)行下面語(yǔ)句
    print("子進(jìn)程結(jié)束了")

結(jié)果:

父進(jìn)程17756
子進(jìn)程要執(zhí)行了
子進(jìn)程運(yùn)行中,name=mark,pid=17758,父進(jìn)程:17756
子進(jìn)程運(yùn)行中,name=mark,pid=17758,父進(jìn)程:17756
子進(jìn)程結(jié)束了

實(shí)例2:兩個(gè)進(jìn)程同時(shí)運(yùn)行

from multiprocessing import Process
import os
import time

def test1(interval):
    print("test1子進(jìn)程運(yùn)行中,pid=%d,父進(jìn)程:%d"%(os.getpid(),os.getppid()))
    t_start=time.time()
    time.sleep(interval)
    t_end=time.time()
    print("test1執(zhí)行時(shí)間:%0.2f秒"%(t_end-t_start))


def test2(interval):
    print("test2子進(jìn)程運(yùn)行中,pid=%d,父進(jìn)程:%d"%(os.getpid(),os.getppid()))
    t_start=time.time()
    time.sleep(interval)
    t_end=time.time()
    print("test2執(zhí)行時(shí)間:%0.2f秒"%(t_end-t_start))

if __name__=="__main__":
    print("父進(jìn)程%d"%os.getpid())
    #創(chuàng)建進(jìn)程實(shí)例,第一個(gè)參數(shù)傳要在子線(xiàn)程執(zhí)行的函數(shù),第二個(gè)參數(shù)傳函數(shù)需要的參數(shù)
    p1=Process(target=test1,args=(1,))
    p2=Process(target=test2,name="mark1",args=(2,))
    #啟動(dòng)進(jìn)程
    p1.start()
    p2.start()

    print("p2是否在運(yùn)行:",p2.is_alive())

    p2.join()#等待子進(jìn)程運(yùn)行結(jié)束再繼續(xù)執(zhí)行下面語(yǔ)句
    print("p2是否在運(yùn)行:", p2.is_alive())

結(jié)果:

父進(jìn)程15080
p2是否在運(yùn)行: True
test1子進(jìn)程運(yùn)行中,pid=15081,父進(jìn)程:15080
test2子進(jìn)程運(yùn)行中,pid=15082,父進(jìn)程:15080
test1執(zhí)行時(shí)間:1.00秒
test2執(zhí)行時(shí)間:2.00秒
p2是否在運(yùn)行: False

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/42359.html

相關(guān)文章

  • Python進(jìn)程專(zhuān)題6:共享數(shù)據(jù)與同步

    摘要:可以使用標(biāo)準(zhǔn)的索引切片迭代操作訪(fǎng)問(wèn)它,其中每項(xiàng)操作均鎖進(jìn)程同步,對(duì)于字節(jié)字符串,還具有屬性,可以把整個(gè)數(shù)組當(dāng)做一個(gè)字符串進(jìn)行訪(fǎng)問(wèn)。當(dāng)所編寫(xiě)的程序必須一次性操作大量的數(shù)組項(xiàng)時(shí),如果同時(shí)使用這種數(shù)據(jù)類(lèi)型和用于同步的單獨(dú)大的鎖,性能將極大提升。 上一篇文章:Python進(jìn)程專(zhuān)題5:進(jìn)程間通信下一篇文章:Python進(jìn)程專(zhuān)題7:托管對(duì)象 我們現(xiàn)在知道,進(jìn)程之間彼此是孤立的,唯一通信的方式是隊(duì)...

    Yuanf 評(píng)論0 收藏0
  • Python進(jìn)程專(zhuān)題7:托管對(duì)象

    摘要:連接帶遠(yuǎn)程管理器對(duì)象,該對(duì)象的地址在構(gòu)造函數(shù)中支出。在當(dāng)前進(jìn)程中運(yùn)行管理器服務(wù)器。啟動(dòng)一個(gè)單的子進(jìn)程,并在該子進(jìn)程中啟動(dòng)管理器服務(wù)器。如果無(wú)法序列號(hào)對(duì)象將引發(fā)異常。 上一篇文章:Python進(jìn)程專(zhuān)題6:共享數(shù)據(jù)與同步下一篇文章:Python進(jìn)程專(zhuān)題8:分布集群的消息傳遞 進(jìn)程不支持共享對(duì)象,上面描述的創(chuàng)建共享值和數(shù)組,但都是指定的特殊類(lèi)型,對(duì)高級(jí)的Python對(duì)象(如:字典、列表、用...

    DevYK 評(píng)論0 收藏0
  • Python進(jìn)程專(zhuān)題4:進(jìn)程池Pool

    摘要:上一篇文章進(jìn)程專(zhuān)題繼承來(lái)創(chuàng)建進(jìn)程下一篇文章進(jìn)程專(zhuān)題進(jìn)程間通信當(dāng)我們需要?jiǎng)?chuàng)建大量的進(jìn)程時(shí),利用模塊提供的來(lái)創(chuàng)建進(jìn)程。關(guān)閉進(jìn)程池,不再接受進(jìn)的進(jìn)程請(qǐng)求,但已經(jīng)接受的進(jìn)程還是會(huì)繼續(xù)執(zhí)行。 上一篇文章:Python進(jìn)程專(zhuān)題3:繼承Process來(lái)創(chuàng)建進(jìn)程下一篇文章:Python進(jìn)程專(zhuān)題5:進(jìn)程間通信 當(dāng)我們需要?jiǎng)?chuàng)建大量的進(jìn)程時(shí),利用multiprocessing模塊提供的Pool來(lái)創(chuàng)建進(jìn)程。 ...

    Leo_chen 評(píng)論0 收藏0
  • Python進(jìn)程專(zhuān)題5:進(jìn)程間通信

    摘要:上一篇文章進(jìn)程專(zhuān)題進(jìn)程池下一篇文章進(jìn)程專(zhuān)題共享數(shù)據(jù)與同步模塊支持的進(jìn)程間通信主要有兩種管道和隊(duì)列。隊(duì)列底層使用管道和鎖,同時(shí)運(yùn)行支持線(xiàn)程講隊(duì)列中的數(shù)據(jù)傳輸?shù)降讓庸艿乐?,?lái)實(shí)習(xí)進(jìn)程間通信。 上一篇文章:Python進(jìn)程專(zhuān)題4:進(jìn)程池Pool下一篇文章:Python進(jìn)程專(zhuān)題6:共享數(shù)據(jù)與同步 multiprocessing模塊支持的進(jìn)程間通信主要有兩種:管道和隊(duì)列。一般來(lái)說(shuō),發(fā)送較少的大...

    eccozhou 評(píng)論0 收藏0
  • Python進(jìn)程專(zhuān)題3:繼承Process來(lái)創(chuàng)建進(jìn)程

    摘要:上一篇文章進(jìn)程專(zhuān)題創(chuàng)建進(jìn)程下一篇文章進(jìn)程專(zhuān)題進(jìn)程池實(shí)例重新方法下面一句是調(diào)用父類(lèi)方法,這一本盡量不要少,因?yàn)楦割?lèi)還有很多事情需要在方法內(nèi)處理重寫(xiě)方法子進(jìn)程運(yùn)行中,,父進(jìn)程子進(jìn)程運(yùn)行結(jié)束,耗時(shí)秒父進(jìn)程開(kāi)始執(zhí)行父進(jìn)程運(yùn)行結(jié)束,耗時(shí)秒結(jié)果父進(jìn) 上一篇文章:Python進(jìn)程專(zhuān)題2:multiprocessing創(chuàng)建進(jìn)程下一篇文章:Python進(jìn)程專(zhuān)題4:進(jìn)程池Pool 實(shí)例: from mu...

    zxhaaa 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<