[本文出自天外歸雲的]
乙個多執行緒的題:定義三個執行緒id分別為abc,每個執行緒列印10遍自己的執行緒id,按abcabc……的順序進行列印輸出。
我的解法:
from threading importthread, 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...