(python)子程序(Process類的使用)

2021-08-19 06:47:59 字數 3054 閱讀 9751

python提供了multiprocessing模組來開啟子程序,並在子程序中執行我們定製的任務。提一嘴(multiprocessing模組的功能眾多,支援子程序,通訊,共享資料,執行不同形式的同步。為些它提供了process、queue、pipe、lock等元件。)

建立程序的類process:

例項化process類可得到乙個物件,來啟乙個程序。

我們來看一下它的引數:

group引數未使用,值始終為none。

target表示呼叫的物件,就是子程序要執行的任務。

name可以為子程序命名。

args指定的為傳結target函式的位置引數,是乙個元組形式,必須有逗號,如:args=('monicx',)

kwargs指定的為傳結target函式的關鍵字引數,是乙個字典,如kwargs=

process類的方法有:

start():啟動程序,並呼叫該子程序中的p.run()

run():程序啟動進執行的方法,就是它去呼叫target指定的函式,我們自定義類的類中一定要實現該方法。

terminate():強制終止程序。不會進行任何清理操作,如果p建立了子程序,該子程序就成了殭屍程序,使用此方法需要小心:如果此程序還儲存了乙個鎖那麼也將不會釋放這個鎖,進而導致死鎖。

is_alive():判斷程序是否是「活著」的狀態。

join(timeout):讓主線程等待某一子程序結束,才繼續執行主程序。timeout是可選的超時時間。超過乙個時間主程序就不等待了。

建立子程序的兩種方式:

方式一:

from multiprocessing import process

import time

def test(name):

print("%s is running "% name)

time.sleep(2)

print('%s is done'%name)

if __name__ == '__main__':

#在windows系統之上,開啟子程序的操作一定要放在這下面

# process(target=test,kwargs=)

p=process(target=test,args=('monicx',))

p.start()#向作業系統傳送乙個請求,作業系統會申請記憶體空間給,然後把父程序的資料拷貝給子程序,作為子程序的初始資料。

print('*****==主')

執行效果為:

方式二:

from multiprocessing import process

import time

class myprocess(process):

def __init__(self,name):

super(myprocess,self).__init__()

self.name=name

def run(self):

print("%s is running " %self.name)

time.sleep(2)

print('%s is done'%self.name)

if __name__ == '__main__':

p=myprocess('monicx')

p.start()#就是呼叫run()方法。

print('====主')

執行結果:

驗證,程序之間的記憶體空間是相互隔離的。

from multiprocessing import process

import time

x=1000

def test():

global x

x=0print('子程序結束',x)

if __name__ == '__main__':

p=process(target=test)

p.start()

print('*****==主')

time.sleep(3)

print(x)

執行結果:

父程序如何等待子程序結束——join()

from multiprocessing import process

import time,random

def test(n):

print('%s is running'%n)

time.sleep(random.randint(1,4))

print('%s子程序結束了'%n)

if __name__ == '__main__':

start_time=time.time()

p_l=

for i in range(5):

p=process(target=test,args=(i,))

p.start()

for p in p_l:

p.join()

# p.join()#讓父程序在原地等

執行結果:

python程序之fork建立子程序

程式執 到os.fork 時,作業系統會建立 個新的程序 程序 然後複製 程序的所有資訊到 程序中 然後 程序和 程序都會從fork 函式中得到 個返回值,在 程序中這 個值 定是0,程序中是 程序的 id號 在unix linux作業系統中,提供了 個fork 系統函式,它 常特殊。普通的函式調 ...

python子程序 Python實戰之子程序

最近做乙個小工具需要用到python的字程序,看了一下python的api,subprocess模組可以就可以實現,並且還挺簡單 要實現乙個簡單的自程序,只需要 import sys,os,subprocess p subprocess.popen ls l shell false,stdin no...

Python中的子程序併發

date 2019 06 16 22 35 33 author headsen chen notice 個人原創 例項 import os,time time.sleep 1 from multiprocessing import process a 100 print a,os.getpid os...