乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      python多線程編程(6): 隊列同步

       看風景D人 2014-01-07

      前面介紹了互斥鎖條件變量解決線程間的同步問題,并使用條件變量同步機制解決了生產(chǎn)者與消費者問題。

      讓我們考慮更復雜的一種場景:產(chǎn)品是各不相同的。這時只記錄一個數(shù)量就不夠了,還需要記錄每個產(chǎn)品的細節(jié)。很容易想到需要用一個容器將這些產(chǎn)品記錄下來。

      Python的Queue模塊中提供了同步的、線程安全的隊列類,包括FIFO(先入先出)隊列Queue,LIFO(后入先出)隊列LifoQueue,和優(yōu)先級隊列PriorityQueue。這些隊列都實現(xiàn)了鎖原語,能夠在多線程中直接使用??梢允褂藐犃衼韺崿F(xiàn)線程間的同步。

      用FIFO隊列實現(xiàn)上述生產(chǎn)者與消費者問題的代碼如下:

      復制代碼
      #encoding=utf-8
      import threading
      import time
      from Queue import Queue

      class Producer(threading.Thread):
      def run(self):
      global queue
      count = 0
      while True:
      for i in range(100):
      if queue.qsize() > 1000:
      pass
      else:
      count = count +1
      msg = '生成產(chǎn)品'+str(count)
      queue.put(msg)
      print msg
      time.sleep(1)

      class Consumer(threading.Thread):
      def run(self):
      global queue
      while True:
      for i in range(3):
      if queue.qsize() < 100:
      pass
      else:
      msg = self.name + '消費了 '+queue.get()
      print msg
      time.sleep(1)

      queue = Queue()


      def test():
      for i in range(500):
      queue.put('初始產(chǎn)品'+str(i))
      for i in range(2):
      p = Producer()
      p.start()
      for i in range(5):
      c = Consumer()
      c.start()
      if __name__ == '__main__':
      test()
      復制代碼



        本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請點擊一鍵舉報。
        轉(zhuǎn)藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多