Python3多執行緒之間的執行順序問題

2022-01-18 03:05:29 字數 1095 閱讀 4210

[本文出自天外歸雲的]

乙個多執行緒的題:定義三個執行緒id分別為abc,每個執行緒列印10遍自己的執行緒id,按abcabc……的順序進行列印輸出。

我的解法:

from threading import

thread, lock

#由_acquire解鎖執行後釋放_release鎖

def _print(_id: str, _acquire: lock, _release: lock) ->none:

for i in range(10):

_acquire.acquire()

print(f"

id:"

) _release.release()

if__name__ == '

__main__':

#建立三個鎖供3個執行緒使用

mutex1 =lock()

mutex2 =lock()

mutex3 =lock()

#定義三個執行緒a、b、c

#執行緒a需要mutex1解鎖執行後釋放mutex2

#執行緒b需要mutex2解鎖執行後釋放mutex3

#執行緒c需要mutex3解鎖執行後釋放mutex1

#元組中第一位是自定義的執行緒id,第二位是解鎖需要的鎖,第三位是釋放的鎖

threads = [thread(target=_print, args=[i[0], i[1], i[2]]) for i in[('

a', mutex1, mutex2), ('

b', mutex2, mutex3), ('c'

, mutex3, mutex1)]]

#把mutex2和mutex3這兩把鎖先用了以便阻塞執行緒2和執行緒3的執行

mutex2.acquire()

mutex3.acquire()

#接下來只有執行緒a可以先執行是因為mutex1並沒有被占用

#執行緒b和執行緒c需要分別等待著鎖2和鎖3的釋放才能繼續執行

[thr.start() for thr in

threads]

[thr.join()

for thr in threads]

Python3多執行緒

學習python執行緒 python3 執行緒中常用的兩個模組為 thread threading 推薦使用 thread 模組已被廢棄。使用者可以使用 threading 模組代替。所以,在 python3 中不能再使用 thread 模組。為了相容性,python3 將 thread 重新命名為...

python3 多執行緒

多執行緒簡介 執行緒 thread 也稱輕量級程序,時作業系統能夠進行運算排程的最小單位,它被包涵在程序之中,時程序中的實際運作單位。執行緒自身不擁有資源,只擁有一些在執行中必不可少的資源,但他可與同屬乙個程序的其他執行緒共享程序所擁有的全部資源。乙個執行緒可以建立和撤銷另乙個執行緒,同一程序中的多...

多執行緒學習3(多執行緒之間實現通訊)

多執行緒之間通訊,其實就是多個執行緒在操作同乙個資源,但是操作的動作不同。畫圖演示 需求 第乙個執行緒寫入 input 使用者,另乙個執行緒取讀取 out 使用者.實現讀乙個,寫乙個操作。實現 共享資源 class user 輸入執行緒 class out extends thread overri...