執行緒
官方:程序(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...