python學習筆記 執行緒與程序

2021-08-20 05:37:59 字數 4449 閱讀 4885

執行緒

官方:程序(process)是計算機中的程式關於某資料集合上的一次執行活動,是系統進行資源分配和排程的基本單位,是作業系統結構的基礎。在早期面向程序設計的計算機結構中,程序是程式的基本執行實體;在當代面向執行緒設計的計算機結構中,程序是執行緒的容器。程式是指令、資料及其組織形式的描述,程序是程式的實體。

格式:

import multiprocessing   #使用程序物件之前要匯入程序模組

p=multiprocessing.process(target=[函式],arges=(tuple))

target 函式的名字

arges 傳入函式的引數,為tuple型別資料

常用物件

is_alive()    #判斷是否程序存活,返回bool型別資料

run()         #啟動程序

start()       #啟動程序,自動呼叫run(),此方法常用

join(timeout)  #等待程序結束或程序超時

name       #程序名字

pid           #程序名字

terminate #結束程序

舉例:

import multiprocessing

import time

def worker(arge,interval):

print("程序開始".format(arge))

time.sleep(interval)

print("程序結束".format(arge))

def main():

print("開始主程序")

p1 = multiprocessing.process(target=worker,args=(1,1))

p2 = multiprocessing.process(target=worker,args=(2,1))

p3 = multiprocessing.process(target=worker,args=(3,1))

p1.start()

p2.start()

p3.start()

print("主程序結束")

print("the number of cpu is: ".format(multiprocessing.cpu_count())) #檢視cpu數目

for i in multiprocessing.active_children():

print("the active of child is :,程序id號:,process is alive:".format(i.name,i.pid,i.is_alive())) #列印子程序名稱、id號、存活狀態

if __name__ == '__main__':

main()

結果:

開始主程序

主程序結束

the number of cpu is: 4

the active of child is :process-1,程序id號:33600,process is alive:true

the active of child is :process-3,程序id號:34240,process is alive:true

the active of child is :process-2,程序id號:31216,process is alive:true

程序1開始

程序2開始

程序3開始

程序1結束

程序2結束

程序3結束

process finished with exit code 0

lock元件

lock元件

import multiprocessing

import time

def add1(lock, value, number):

with lock:

print("start add1 number = ".format(number))

for i in range(1, 5):

number += value

time.sleep(0.3)

print("number = ".format(number))

def add3(lock, value, number):

lock.acquire()

print("start add3 number = ".format(number))

try:

for i in range(1, 5):

number += value

time.sleep(0.3)

print("number = ".format(number))

finally:

lock.release()

if __name__ == "__main__":

lock = multiprocessing.lock()

number = 0

pw = multiprocessing.process(target=add1, args=(lock, 1, number))

pa = multiprocessing.process(target=add3, args=(lock, 3, number))

pw.start()

pa.start()

print("main process end.")

結果:

main process end.

start add1 number = 0

number = 1

number = 2

number = 3

number = 4

start add3 number = 0

number = 3

number = 6

number = 9

number = 12

process finished with exit code 0

共享記憶體

不同程序彼此之間是互不通訊,multiprocessing模組中存在value和array物件,提供程序之間共享記憶體進行通訊

舉例:

import multiprocessing

from multiprocessing import value

import time

def add3(value,number):

try:

print("------開始+3程序------")

for i in range(1,5):

number.value+=value #3+3

print("number = .".format(number.value))

except exception as e:

raise e

def add1(value,number):

try:

print("------開始+1程序------")

for i in range(1,5):

number.value+=value #1+1

print("number = .".format(number.value))

except exception as e:

raise e

def main():

number = value('d',0)

p1=multiprocessing.process(target=add1,args=(1,number))

p2=multiprocessing.process(target=add3,args=(3,number))

p1.start()

p2.start()

if __name__ == '__main__':

main()

結果:

------開始+3程序------

number = 3.0.

number = 6.0.

number = 9.0.

number = 12.0.

------開始+1程序------

number = 13.0.

number = 14.0.

number = 15.0.

number = 16.0.

process finished with exit code 0

python學習筆記 程序和執行緒

對於作業系統來說,乙個任務就是乙個程序 process 比如開啟乙個瀏覽器就是啟動乙個瀏覽器程序,開啟乙個記事本就啟動了乙個記事本程序,開啟兩個記事本就啟動了兩個記事本程序,開啟乙個word就啟動了乙個word程序。有些程序還不止同時幹一件事,比如word,它可以同時進行打字 拼寫檢查 列印等事情。...

多執行緒學習筆記(四)程序與執行緒

程序是程式的一次執行過程,是系統執行程式的基本單位,因此程序是動態的。系統執行乙個程式即是乙個程序從建立,執行到消亡的過程。簡單來說,乙個程序就是乙個執行中的程式,它在計算機中乙個指令接著乙個指令地執行著,同時,每個程序還占有某些系統資源如 cpu 時間,記憶體空間,檔案,輸入輸出裝置的使用權等等。...

python執行緒與程序

直接呼叫 import threading,time def run n print running n time.sleep 2 t1 threading.thread target run,args test1 生成乙個執行緒例項 t2 threading.thread target run,a...