python 協程 執行緒 程序 (三)執行緒同步

2021-10-08 16:45:52 字數 1435 閱讀 6585

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 程序,執行緒, 協程

程序是系統進行資源分配和排程的乙個獨立單位 最小單位 程序的幾個狀態 空 新建 建立執行乙個程式的新程序,可能的事件有 新的批處理作業 互動登入 終端使用者登入到系統 作業系統因為提供一項服務而建立 由現有的程序派生等。新建 就緒 作業系統準備好再接納乙個程序時,把乙個程序從新建態轉換為就緒態。就緒...