最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

Python3中多線程編程的隊(duì)列運(yùn)作示例

 更新時(shí)間:2015年04月16日 10:56:02   投稿:goldensun  
這篇文章主要介紹了Python3中多線程編程的隊(duì)列運(yùn)作示例,文中用一個(gè)簡單的例子展示了Python下嘗試多線程時(shí)隊(duì)列的進(jìn)站出站是如何運(yùn)作的,需要的朋友可以參考下

Python3,開一個(gè)線程,間隔1秒把一個(gè)遞增的數(shù)字寫入隊(duì)列,再開一個(gè)線程,從隊(duì)列中取出數(shù)字并打印到終端

#! /usr/bin/env python3

import time
import threading
import queue

# 一個(gè)線程,間隔一定的時(shí)間,把一個(gè)遞增的數(shù)字寫入隊(duì)列
# 生產(chǎn)者
class Producer(threading.Thread):

  def __init__(self, work_queue):
    super().__init__() # 必須調(diào)用
    self.work_queue = work_queue
    
  def run(self):
    num = 1
    while True:
      self.work_queue.put(num)
      num = num+1
      time.sleep(1) # 暫停1秒

# 一個(gè)線程,從隊(duì)列取出數(shù)字,并顯示到終端
class Printer(threading.Thread):

  def __init__(self, work_queue):
    super().__init__() # 必須調(diào)用
    self.work_queue = work_queue

  def run(self):
    while True:
      num = self.work_queue.get() # 當(dāng)隊(duì)列為空時(shí),會阻塞,直到有數(shù)據(jù)
      print(num)

def main():
  work_queue = queue.Queue()

  producer = Producer(work_queue)
  producer.daemon = True # 當(dāng)主線程退出時(shí)子線程也退出
  producer.start()

  printer = Printer(work_queue)
  printer.daemon = True # 當(dāng)主線程退出時(shí)子線程也退出
  printer.start()

  work_queue.join() # 主線程會停在這里,直到所有數(shù)字被get(),并且task_done(),因?yàn)闆]有調(diào)用task_done(),所在這里會一直阻塞,直到用戶按^C

if __name__ == '__main__':
  main()

queue是線程安全的,從多個(gè)線程訪問時(shí)無需加鎖。
如果在work_queue.get()之后調(diào)用work_queue.task_done(),那么在隊(duì)列空時(shí)work_queue.join()會返回。
這里work_queue.put()是間隔一定時(shí)間才往隊(duì)列放東西,如果調(diào)用work_queue.task_done(),在數(shù)字1被get()后,隊(duì)列空時(shí),join()就返回,程序就結(jié)束了。
也就是程序只打印了1然后就退出了。
所以在這種使用情景下,不能調(diào)用task_done(),程序會一直循環(huán)下去。

相關(guān)文章

  • 基于Python實(shí)現(xiàn)GeoServer矢量文件批量發(fā)布

    基于Python實(shí)現(xiàn)GeoServer矢量文件批量發(fā)布

    由于矢量圖層文件較多,手動發(fā)布費(fèi)時(shí)費(fèi)力,python支持的關(guān)于geoserver包又由于年久失修,無法在較新的geoserver版本中正常使用。本文為大家準(zhǔn)備了Python自動化發(fā)布矢量文件的代碼,需要的可以參考一下
    2022-07-07
  • python爬取全國火鍋店數(shù)量并可視化展示

    python爬取全國火鍋店數(shù)量并可視化展示

    這篇文章主要介紹了python爬取全國火鍋店數(shù)量并可視化展示,文章通過獲取全國不同城市火鍋店數(shù)量情況,并將這些數(shù)據(jù)進(jìn)行可視化展示,下文詳細(xì)內(nèi)容介紹,需要的小伙伴可以參考
    2022-05-05
  • 利用Python+Excel制作一個(gè)視頻下載器

    利用Python+Excel制作一個(gè)視頻下載器

    說起Excel,那絕對是數(shù)據(jù)處理領(lǐng)域王者般的存在。而作為網(wǎng)紅語言Python,在數(shù)據(jù)領(lǐng)域也是被廣泛使用。本文將利用Python和Excel制作一個(gè)視頻下載器,需要的可以參考一下
    2022-05-05
  • python中matplotlib條件背景顏色的實(shí)現(xiàn)

    python中matplotlib條件背景顏色的實(shí)現(xiàn)

    這篇文章主要給大家介紹了關(guān)于python中matplotlib條件背景顏色的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家學(xué)習(xí)或者使用python具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-09-09
  • python圖形界面tkinter的使用技巧

    python圖形界面tkinter的使用技巧

    這篇文章主要介紹了python圖形界面tkinter的使用技巧,文章圍繞主題展開詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-09-09
  • Python使用ftplib實(shí)現(xiàn)簡易FTP客戶端的方法

    Python使用ftplib實(shí)現(xiàn)簡易FTP客戶端的方法

    這篇文章主要介紹了Python使用ftplib實(shí)現(xiàn)簡易FTP客戶端的方法,實(shí)例分析了ftplib模塊相關(guān)設(shè)置與使用技巧,需要的朋友可以參考下
    2015-06-06
  • 如何解決requests,已經(jīng)安裝卻無法import問題

    如何解決requests,已經(jīng)安裝卻無法import問題

    這篇文章主要介紹了如何解決requests,已經(jīng)安裝卻無法import問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-06-06
  • Python基礎(chǔ)教程之多線程編程詳解

    Python基礎(chǔ)教程之多線程編程詳解

    Python支持多線程編程和多進(jìn)程編程,在本教程中,我們將學(xué)習(xí)有關(guān)Python多線程編程的基礎(chǔ)知識、線程同步、線程池以及如何使用多進(jìn)程,需要的朋友可以參考下
    2023-06-06
  • 教你用Python讀取CSV文件的5種方式

    教你用Python讀取CSV文件的5種方式

    一個(gè)股票的數(shù)據(jù)集,其實(shí)就是常見的表格數(shù)據(jù),有自己的頭部和身體,這篇文章主要介紹了用Python讀取CSV文件的5種方式,通過五招給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-11-11
  • 淺談優(yōu)化Django ORM中的性能問題

    淺談優(yōu)化Django ORM中的性能問題

    這篇文章主要介紹了淺談優(yōu)化Django ORM中的性能問題,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-07-07

最新評論

逊克县| 仙游县| 六安市| 沙雅县| 朝阳县| 青海省| 南川市| 河源市| 嘉兴市| 砚山县| 德清县| 正定县| 武城县| 儋州市| 玉龙| 贡觉县| 秭归县| 阿图什市| 洞头县| 启东市| 邵武市| 定陶县| 南昌市| 思茅市| 崇左市| 玉环县| 玉树县| 同仁县| 唐海县| 会同县| 卢龙县| 赤峰市| 英超| 平度市| 启东市| 方山县| 乌拉特中旗| 德州市| 本溪市| 拉孜县| 伊吾县|