併發程式設計(三) 開啟程序

2022-05-17 02:23:32 字數 2550 閱讀 3138

*****

上一節說了那麼多關於程序的東西,那這一節就嘗試著自己開啟一下程序

這一節我們可以嘗試著使用multiprocessing模組開啟程序

通過掌握multiprocessing模組開啟程序的兩種方式

是我們在後面的學習的基礎,所以一定要好好看

首先,由於語言特點,python的多執行緒沒辦法使用多核優勢

所以說,但凡我們想要利用到多核的優勢,在python中大部分都要用到多程序

基於python的模組多且廣的優勢,在多程序方面就有了multiprocessing這個模式進行支援

這個模組提供的功能眾多:支援子程序等等,提供了process,queue,pipe和lock等元件

但是!這裡需要強調乙個問題就是:

與執行緒不同,程序沒有任何共享狀態,程序修改的資料,改動僅限於該程序內

class process(object):

def __init__(self, group=none, target=none, name=none, args=(), kwargs={}):

self.name = ''

self.daemon = false

self.authkey = none

self.exitcode = none

self.ident = 0

self.pid = 0

self.sentinel = none

介紹一下引數:

group:引數未使用,值始終是none

target:表示呼叫物件,即子程序要執行的任務(就是塞進去乙個你想執行的函式)

args:表示呼叫物件的位置引數元祖(就是對函式進行傳參)

kwargs:表示呼叫物件的字典(就是對函式進行傳參)

name:子程序的名字

介紹一下屬性:

p.daemon:預設值為false,如果設為true,代表p為後台執行的守護程序

​ 當p的父程序終止時,p也隨之終止,並且設定為true後,p不能建立自己的新程序

​ 必須在p.start()之前設定

​ p.name:程序的名稱

​ p.pid:程序的pid

def run(self):

pass

def start(self):

pass

def terminate(self):

pass

def join(self, timeout=none):

pass

def is_alive(self):

return false

接下來介紹一下方法:

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

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

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

p.is_alive():如果p仍然執行,返回true

p.join([timeout]):主線程等待p終止(強調:是主線程處於等的狀態,而p是處於執行的狀態)

​ timeout是可選的超時時間

首先很重要的一點就是,在windows系統,程序的開啟必須放到ifname== 'main':的下面

from multiprocessing import process

def func(name, *args, **kwargs):

print(f'執行!')

pass

if __name__ == '__main__':

p = process(target=func, args=('子程序',))

p.start()

print('我是主程序... ...')

在主程序中建立乙個子程序,用來執行函式func,並對函式進行傳參

然後利用start進行宣告子程序

from multiprocessing import process

class myprocess(process):

"""這是myprocess"""

def __init__(self, name):

super().__init__()

self.name = name

def run(self):

print(f'執行!')

if __name__ == '__main__':

p = myprocess('子程序')

p.start()

print('我是主程序... ...')

這種方法用的太少了,就看一下了解一下就行

更多的還是第一種方法的使用

*****

*****

併發程式設計 開啟程序方式 檢視程序pid

1.開啟程序的兩種方式 方式一 from multiprocessing import process import time deftask name print s is running name time.sleep 3 print s is done name if name main pr...

python併發程式設計 程序,併發

1.程序是乙個正在執行的程式,或者說是程式執行的過程,程序是個抽象概念 程序起源於作業系統,是作業系統最核心的概念,作業系統所有其他的概念都是圍繞程序展開 研究程序最底層就是在研究作業系統底層 2.序列 程序 乙個任務完完整整的執行完畢後,在執行下乙個任務 3.併發 程序 看起來多個任務是同時執行即...

併發程式設計 程序基礎

作業系統 阻塞和非阻塞 非阻塞 程序只會在就緒和 執行狀態中切換 程序三狀態 就緒 執行 阻塞 併發並行 子程序和主程序 多併發的tcp服務端 程序是作業系統中最小的資源分配單位 程序process 開啟子程序 join控制子程序 守護程序 daemon 鎖同步控制 訊號量 機制 計數器 鎖實現的 ...