python學習之多程序

2021-10-04 22:28:37 字數 2460 閱讀 3799

在介紹多程序之前,首先介紹下作業系統獲取關於程序中的一些資訊

方法描述

os.getpid()

獲取當前程序的pid

os.getppid()

獲取當前程序的父程序的pid

在python中,我們一般都是通過引入multiprocessing模組來實現多程序程式設計,multiprocessing模組提供了乙個process類來實現乙個程序物件。

process(target,name,args,kwargs)
from multiprocessing import process

import os

# 子程序要執行的**

defrun_proc

(name)

:print

('run child process %s (%s)...'

%(name, os.getpid())

)if __name__==

'__main__'

:print

('parent process %s.'

% os.getpid())

p = process(target=run_proc, args=

('test',)

)print

('child process will start.'

) p.start(

) p.join(

)print

('child process end.'

)

執行結果如下圖所示,在上面程式中首先通過呼叫process類產生乙個程序例項,並指定該程序執行任務時run_proc函式,傳入的引數是test,在這是需要注意的是,如果傳入的引數只有乙個,就需要在引數後面新增乙個,至於startjoin方法用途可以檢視下面的表。通過呼叫os.getpid()是獲取當前執行的程序的pid。通過圖可以看到父程序pid是23888,子程序pid是24540

process屬性方法介紹 方法

描述start()

啟動程序,呼叫程序中的run()方法

terminate()

強制終止程序,不會進行任何清理操作。如果該程序終止前,建立了子程序,那麼該子程序在其強制結束後變為殭屍程序

is_alive()

判斷某程序是否存活,存活返回true,否則false

join([timeout])

主線程等待子執行緒終止。timeout為可選擇超時時間;需要強調的是,p.join只能join住start開啟的程序,而不能join住run開啟的程序

run()

程序啟動時執行的方法,正是它去呼叫target指定的函式,我們自定義類的類中一定要實現該方法

上面介紹了如果只建立單個程序的方法,如果同時建立多個程序,使用上面的方式則顯得有點累贅。這裡multiprocessing模組就提供了pool類,用於建立程序池,使用程序池的好處就是通過程序池容易對多個程序進行管理。

pool(numprocess,initializer,initargs)
python程序池pool常用方法

方法描述

from multiprocessing import pool

import os, time, random

deflong_time_task

(name)

:print

('run task %s (%s)...'

%(name, os.getpid())

) start = time.time(

) time.sleep(random.random()*

3)end = time.time(

)print

('task %s runs %0.2f seconds.'

%(name,

(end - start)))

if __name__==

'__main__'

:print

('parent process %s.'

% os.getpid())

p = pool(4)

for i in

range(5

):(i,)

)print

('waiting for all subprocesses done...'

) p.close(

) p.join(

)print

('all subprocesses done.'

)

執行結果如下圖所示

python之多程序

要讓python實現多程序 multiprocessing 我們先來了解作業系統相關知識。unix 和 linux 作業系統提供了乙個 fork 函式系統呼叫,它非常特殊。普通的函式,呼叫一它次,執行一次,但是 fork 函式呼叫一次執行兩次,因為作業系統自動把當前程序 稱為父程序 複製了乙份 稱為...

Python學習之多程序例項

第一部分 任務分發端 usr bin env python coding utf 8 time 17 9 17 上午10 49 author mylovin file multiprocess server.py software pycharm 說明 多程序例項 分發任務端 匯入必備標頭檔案 im...

python學習筆記之多程序

我們現代的作業系統,都是支援 多工 的作業系統,對於操程式設計客棧作系統來說,乙個任務就是乙個程序 process 比如開啟乙個瀏覽器就是啟動乙個瀏覽器程序。如果我們將計算器的核心cpu比喻為一座工廠,那麼程序就像工廠裡的車間,它代表cpu所能處理的單個任務。任一時刻,cpu總是執行乙個程序,其他程...