程序(一) 多程序的呼叫

2021-09-11 04:28:22 字數 2420 閱讀 1129

由於gil的存在,python中的多執行緒其實並不是真正意義的多執行緒,如果想要充分地使用多核cpu的資源,在python中大部分情況需要使用多程序。

multiprocessing包是python中的多程序管理包。與threading.thread類似,他利用multiprocessing.process物件來建立乙個程序。該程序可以執行在python程式內部編寫的函式。該process物件與thread物件用法相同,也有start(),run(),join()方法。此外,該包也有lock/event/semaphore/condition類(這些物件可以像多執行緒那樣,通過引數專遞給各個程序),用以同步程序,其用法和threading包中的同類名一致。所以,multiprocessing的很大一部分和threading使用同一套api,只不過換到了多程序的情境。

process類

構造方法:

process( group,[ target[, name[, args[, kwargs]]]]) 

group :執行緒組,目前還沒有實現,庫引用中提示必須為none

target:要執行的方法

name:程序名

args/kwargs:要傳入方法的引數

is_alive():返回程序是否執行

join([timeout]):阻塞當前上下文環境程序,知道呼叫此方法的程序終止或者達到指定的timeout(可選引數).

start():程序準備就緒,等待cpu排程

run():start()呼叫該方法,如果例項程序時未制定傳入target,這start執行預設run方法

terminate():不管任務是否完成,立即停止工作程序

daemon:和執行緒的setdeamon功能一樣

name:程序名字

pid:程序號

from multiprocessing import  process

import time,os

def f(name):

time.sleep(1)

print("process %s"%name)

class myprocess(process):

def run(self):

time.sleep(1)

print("%s run....."%self.name,time.ctime())

def info(title):

print("titlel:",title)

print("parent process :",os.getppid())

print("process id:",os.getpid()) #

if __name__ =="__main__":

p_list =

for i in range(3):

p = process(target=f,args=("lian",))

p.start()

for i in p_list:

i.join()

for i in range(3):

p = myprocess()

p.daemon = true #守護程序

p.start()

print("end ")

每個程序都有父程序,同一批程序裡的父類都是一樣的。

from multiprocessing import  process

import time,os

def info(title):

print("titlel: %s\n"%title)

print("parent process :%d\n"%os.getppid())

print("process id:%d \n"%os.getpid()) #

if __name__ =="__main__":

p_list =

for i in range(3):

p = process(target=info,args=("lian process",))

p.start()

for i in p_list:

i.join()

輸出 :

多程序呼叫

多程序呼叫 大部分與多執行緒的操作一樣 呼叫方式1 from multiprocessing import process import time deff name time.sleep 1 print hello name,time.ctime if name main p list for i...

Rust的併發程式設計(一)多程序併發

併發,是指在巨集觀意義上同一時間處理多個任務。併發的方式一般包含為三種 多程序 多執行緒以及最近幾年剛剛火起來的協程。首先,我們建立兩個專案,乙個為子程序,乙個為主程序。在子程序的main.rs中,編寫如下 use std thread sleep use std time duration fn ...

Python併發機制的實現 一 多程序

python併發機制的實現 一 多程序 unix linux系統呼叫實現多程序 windows系統不支援 unix linux作業系統提供了乙個fork 系統呼叫,它非常特殊。普通的函式呼叫,呼叫一次,返回一次,但是fork 呼叫一次,返回兩次,因為作業系統自動把當前程序 稱為父程序 複製了乙份 稱...