日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

Queue用法

發布時間:2023/12/20 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 Queue用法 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

?

Queue是多進程安全的隊列,可以使用Queue實現多進程之間的數據傳遞。put方法用以插入數據到隊列中,put方法還有兩個可選參 數:blocked和timeout。如果blocked為True(默認值),并且timeout為正值,該方法會阻塞timeout指定的時間,直到 該隊列有剩余的空間。如果超時,會拋出Queue.Full異常。如果blocked為False,但該Queue已滿,會立即拋出Queue.Full 異常。
get方法可以從隊列讀取并且刪除一個元素。同樣,get方法有兩個可選參數:blocked和timeout。如果blocked為 True(默認值),并且timeout為正值,那么在等待時間內沒有取到任何元素,會拋出Queue.Empty異常。如果blocked為 False,有兩種情況存在,如果Queue有一個值可用,則立即返回該值,否則,如果隊列為空,則立即拋出Queue.Empty異常。Queue的一 段示例代碼:

?

#-*- encoding:utf-8 -*- import sys import time reload(sys) sys.setdefaultencoding('utf-8') import multiprocessingdef writer_proc(q):print"start write_proc"time.sleep(3)try:q.put(1, block = False)print"writer_proc\n"except:passprint"finish write_proc"def reader_proc(q):print"start reader_proc"time.sleep(2)# time.sleep(3)#如果這句話代替上面那句話,那么整個代碼運行順序其實是不定的try:print (q.get(block = False))#從隊列讀取一個元素并且刪除一個元素print"read_proc\n"except:passprint"finish reader_proc"if __name__ == "__main__":#隊列的作用是一個入口輸入數據,出口讀取數據q = multiprocessing.Queue()writer = multiprocessing.Process(target=writer_proc, args=(q,))#開一個進程writer.start()reader = multiprocessing.Process(target=reader_proc, args=(q,))#開一個進程reader.start()print"#############################"writer.join()print"------------writer.join()------------"reader.join()print"------------reader.join()-------------------"

?

如果這是在分析別人的代碼,那么要分四種情況:
reader跑完和沒跑完,writer跑完和沒跑完,然后排列組合共四種
然后才能分析清楚join是否有了阻塞的效果。


join就是去“回收”線程,如果沒跑完,當然要等跑完了,如果已經跑完了,立刻就“回收”了
join是阻塞的(如果沒跑完,要等),至于是否代碼真的有花時間等,那個要看你進程具體做的什么,等等
queue自身可以檢查 empty() (是否為空),也可以直接做get然后自己去收一下empty的錯誤,也可以用task_done()作為信號傳遞
join是說“等待”如果你的子進程已經結束了,就不用等待了
join這里,只是說等待的順序(假設兩個進程都沒有跑完,需要時間跑)
那么先等待哪個結束


總結:
在兩個進程都沒運行完的情況下,join是確保哪個進程先結束,另外一個進程先阻塞
對于進程運行完的,有join=沒有join
join對于已經運行完的進程是可以看做無效的

?

?

總結

以上是生活随笔為你收集整理的Queue用法的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。