ps:對於那些需要每次只允許乙個執行緒操作的資料,可以將其操作放到acquire和release方法之間。
#!coding:utf-8
import threading, time, random
# lock = threading.lock() #lock物件
# lock.acquire()
# lock.acquire() #產生了死瑣。
# lock.release()
# lock.release()
## ------------------------------------------
# rlock = threading.rlock() #rlock物件
# rlock.acquire()
# rlock.acquire() #在同一執行緒內,程式不會堵塞。
# rlock.release()
# rlock.release()
mylock = threading.rlock()
num = 0
class mythread(threading.thread):
def __init__(self, name):
threading.thread.__init__(self,name=name)
def run(self):
global num
while true:
mylock.acquire()
print("%s locked, number: %d " % (threading.current_thread().name, num))
if num >= 4:
mylock.release()
print("%s released, number: %d " % (threading.current_thread().name, num))
break
print('%s released, number: %d ' % (threading.current_thread().name, num))
num += 1
# print('%s released, number: %d ' % (threading.current_thread().name, num))
mylock.release()
time.sleep(random.random())
if __name__ == '__main__':
thread1 = mythread('thread_1')
thread2 = mythread('thread_2')
thread1.start()
thread2.start()
thread1.join()
thread2.join()
python 執行緒程序協程(三)
1.在python3.4之前,協程是通過生成器 yield 實現的 def count down n while n 0 yield n n 1 if name main rest count down 5 print next rest print next rest print next res...
Python 程序 執行緒 協程
程序和執行緒之間的關係 執行緒是屬於程序的,執行緒執行在程序空間內,同一程序所產生的執行緒共享同一記憶體空間,當程序退出時該程序所產生的執行緒都會被強制退出並清除。執行緒可與屬於同一程序的其它執行緒共享程序所擁有的全部資源,但是其本身基本上不擁有系統資源,只擁有一點在執行中必不可少的資訊 如程式計數...
Python 程序,執行緒, 協程
程序是系統進行資源分配和排程的乙個獨立單位 最小單位 程序的幾個狀態 空 新建 建立執行乙個程式的新程序,可能的事件有 新的批處理作業 互動登入 終端使用者登入到系統 作業系統因為提供一項服務而建立 由現有的程序派生等。新建 就緒 作業系統準備好再接納乙個程序時,把乙個程序從新建態轉換為就緒態。就緒...