執行緒和python

2021-04-09 06:29:05 字數 1362 閱讀 1840

用鎖進行執行緒的同步例子

對python虛擬機器訪問是由乙個「全域性性解釋鎖」(global interpreter lock)指控的,python虛擬機器的執行方式是下面的方式:

.設定gil

.把乙個執行緒切換到執行狀態

.執行一定數量的位元組碼指令

.把那個執行緒放回到休眠狀態(把執行緒切換出執行狀態)

.解開gil,然後從頭再來

thread模組提供了對執行緒和執行緒鎖的基本支援,threading模組提供了更高水平的全功能的執行緒管理功能。queue模組允許使用者建立乙個能夠被多個執行緒共享的佇列資料結構。

下面給出建立執行緒的3種方法:

1)建立thread例項,傳遞進乙個函式

2)建立thread例項,傳遞進可呼叫類例項

3)從thread推導子類並建立子類例項

1)建立thread例項,傳遞進乙個函式

#!/usr/bin/env python

import threading

from time import sleep,time,ctime

for i in nloops:#呼叫每個執行緒的start()方法讓他們一起衝出起跑線

threads[i].start()

for i in nloops:

threads[i].join()#執行緒鎖也不需要我們的管理了(分配記憶體,取得,釋放,檢查各個執行緒鎖狀態)

#使用join會等待乙個執行緒的結束,如果進行了相應的設定,也可以等待乙個執行緒超時情況的發生,join顯然要比乙個等待執行緒鎖被釋放的無限迴圈要清晰的多

#呼叫join就是讓主線程等待其他執行緒們一起完成

print 'all done at :',ctime(time())

for i in nloops:

threads[i].start()

for i in nloops:

threads[i].join()

print 'all done at :',ctime(time())

for i in nloops:

threads[i].start()

for i in nloops:

threads[i].join()

print 'all done at :',ctime(time())

下面給出乙個製造商-消費商和queue模組結合的例子,queue模組提供執行緒間內部通訊機制,它允許執行緒們彼此共享資料

#!/usr/bin/env python

import threading

from random import randint

from time import time,ctime,sleep

from queue import queue

python 執行緒池 鎖 python多執行緒和鎖

python中,有兩個標準模組thread和threading可以實現多執行緒,不過threading更加高階,推薦使用threading。threading 模組提供的常用方法 threading.currentthread 返回當前的執行緒變數。threading.enumerate 返回乙個包...

python 阻塞執行緒和守護執行緒

一 執行緒的建立 threading.thread建立乙個執行緒,返回乙個物件,用變數接收 變數.start啟動執行緒 coding utf 8 author 2022 5 10 gil 全域性直譯器鎖,只允許 同一時間只允許1個執行緒進入cpu,所以cpython中沒有並行,是併發 import ...

Python 執行緒和程序

一 什麼是執行緒 1 執行緒是作業系統能夠進行運算排程的最小單位。它被包含在程序中,是程序中的實際運作單位。一條執行緒指的是程序中乙個單一順序的控制流,乙個程序中可以併發多個執行緒,每條執行緒並行執行不同的任務。每個程序至少包含乙個執行緒.二 什麼是程序 1 乙個程序就是乙個程式的例項,每個程序裡面...