tensorflow随笔-队列管理器QueueRunner-生产者与消费者
[16.1576]
[42.464508]
[13.7773485]
[39.160828]
[44.308994]
[30.80474]
[37.00065]
[2.7175977]
[32.29577]
[6.0784574]
(1)隊列管理器單獨開線程進行入隊操作
(2)主線程進行出隊操作
從而完成生產者與消費者模型
隊列是使用多線程異步計算張量的一種方便的TensorFlow機制。例如,在規范的“input Reader”設置中,一組線程在隊列中生成文件名;第二組線程從文件中讀取記錄,對其進行處理,并將張量放入第二隊列;第三組線程從這些輸入記錄中取出隊列來構造批,并通過培訓操作運行它們。
當以這種方式運行多個線程時,存在幾個微妙的問題:在輸入耗盡時按順序關閉隊列、正確捕獲異常并報告異常,等等。
QueueRunner與協調器一起幫助處理這些問題
__init__(queue=None,enqueue_ops=None,close_op=None,cancel_op=None,queue_closed_exception_types=None,queue_runner_def=None,import_scope=None )enqueue_ops:稍后將在線程中運行的enqueue ops 入隊OPS列表
create_threads(sess,coord=None,daemon=False,start=False )創建線程來運行給定Session的入隊操作。
此方法需要啟動圖graph的Session。它創建一個線程列表,可以選擇啟動它們。enqueue_ops中傳遞的每個op都有一個線程。
coord參數是一個可選的協調器,線程將使用它一起終止并報告異常。如果給定一個協調器,此方法將啟動一個附加線程,以便在協調器請求停止時關閉隊列。
如果先前為給定會話創建的線程仍在運行,則不會創建任何新線程。
總結
以上是生活随笔為你收集整理的tensorflow随笔-队列管理器QueueRunner-生产者与消费者的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 使用Java的BlockingQueue
- 下一篇: 如何在家访问公司的文件服务器,企业的共享