国产片侵犯亲女视频播放_亚洲精品二区_在线免费国产视频_欧美精品一区二区三区在线_少妇久久久_在线观看av不卡

腳本之家,腳本語言編程技術及教程分享平臺!
分類導航

Python|VBS|Ruby|Lua|perl|VBA|Golang|PowerShell|Erlang|autoit|Dos|bat|

服務器之家 - 腳本之家 - Python - python條件變量之生產者與消費者操作實例分析

python條件變量之生產者與消費者操作實例分析

2020-09-25 09:41聰明的狐貍 Python

這篇文章主要介紹了python條件變量之生產者與消費者操作,結合具體實例形式分析了Python條件變量的概念、原理、及線程操作的相關技巧,需要的朋友可以參考下

本文實例講述了python條件變量之生產者與消費者操作。分享給大家供大家參考,具體如下:

互斥鎖是最簡單的線程同步機制,面對復雜線程同步問題,Python還提供了Condition對象。Condition被稱為條件變量,除了提供與Lock類似的acquire和release方法外,還提供了wait和notify方法。線程首先acquire一個條件變量,然后判斷一些條件。如果條件不滿足則wait;如果條件滿足,進行一些處理改變條件后,通過notify方法通知其他線程,其他處于wait狀態的線程接到通知后會重新判斷條件。不斷的重復這一過程,從而解決復雜的同步問題。

可以認為Condition對象維護了一個鎖(Lock/RLock)和一個waiting池。線程通過acquire獲得Condition對象,當調用wait方法時,線程會釋放Condition內部的鎖并進入blocked狀態,(但實際上不會block當前線程)同時在waiting池中記錄這個線程。當調用notify方法時,Condition對象會從waiting池中挑選一個線程,通知其調用acquire方法嘗試取到鎖。

Condition對象的構造函數可以接受一個Lock/RLock對象作為參數,如果沒有指定,則Condition對象會在內部自行創建一個RLock。

線程同步經典問題----生產者與消費者問題可以使用條件變量輕松解決。

?
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
import threading
import time
class Producer(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
  def run(self):
    global count
    while True:
      con.acquire()
      if count <20:
        count += 1
        print self.name," Producer product 1,current is %d" %(count)
        con.notify()
      else:
        print self.name,"Producer say box is full"
        con.wait()
      con.release()
      time.sleep(1)
class Consumer(threading.Thread):
  def __init__(self):
    threading.Thread.__init__(self)
  def run(self):
    global count
    while True:
      con.acquire()
      if count>4:
        count -=4
        print self.name,"Consumer consume 4,current is %d" %(count)
        con.notify()
      else:
        con.wait()
        print self.name," Consumer say box is empty"
      con.release()
      time.sleep(1)
count = 0
con = threading.Condition()
def test():
  for i in range(1):
    a = Consumer()
    a.start()
  for i in range(1):
    b =Producer()
    b.start()
if __name__=='__main__':
  test()

上面的代碼假定消費者消費的比較快,輸出結果為:

python條件變量之生產者與消費者操作實例分析

 

希望本文所述對大家Python程序設計有所幫助。

延伸 · 閱讀

精彩推薦
Weibo Article 1 Weibo Article 2 Weibo Article 3 Weibo Article 4 Weibo Article 5 Weibo Article 6 Weibo Article 7 Weibo Article 8 Weibo Article 9 Weibo Article 10 Weibo Article 11 Weibo Article 12 Weibo Article 13 Weibo Article 14 Weibo Article 15 Weibo Article 16 Weibo Article 17 Weibo Article 18 Weibo Article 19 Weibo Article 20 Weibo Article 21 Weibo Article 22 Weibo Article 23 Weibo Article 24 Weibo Article 25 Weibo Article 26 Weibo Article 27 Weibo Article 28 Weibo Article 29 Weibo Article 30 Weibo Article 31 Weibo Article 32 Weibo Article 33 Weibo Article 34 Weibo Article 35 Weibo Article 36 Weibo Article 37 Weibo Article 38 Weibo Article 39 Weibo Article 40
主站蜘蛛池模板: 精品成人18| 国产99久久精品一区二区永久免费 | 99综合在线 | 亚洲国产精品自拍 | 欧美色影院 | 在线日韩一区 | 成人在线 | 国产精品久久免费观看spa | 青青草网站 | 国产精品久久久久久久久久久久 | 精品久久久久久久久久久久 | 一级做a爰片性色毛片2021 | 国产h片在线观看 | 澳门黄色网 | 三级av在线| 99精品国自产在线 | 国产成人精品久久二区二区91 | 国产激情一区二区三区成人免费 | 综合久久久久 | 91久久综合| 久久久久久国产精品 | 久久久久99 | 久久久av | 日本日韩中文字幕 | 一区二区三区免费播放 | 久草视频在线播放 | 久在线 | 日日爱999 | 一级免费毛片 | 久久一区 | 欧美在线日韩 | 国产一区二区三区在线观看免费 | 久久蜜桃精品一区二区三区综合网 | 欧美视频免费在线 | 亚洲精品一区二区三区 | 国产美女自拍视频 | 久久精品一 | 91九色视频pron| 国产精品成人av | 亚洲特黄av | 欧美成人区 |