tft每日頭條

 > 生活

 > python中的queue實現

python中的queue實現

生活 更新时间:2024-11-14 11:48:35

python中的queue實現?Process之間有時需要通信,操作系統提供了很多機制來實現進程間的通信,現在小編就來說說關于python中的queue實現?下面内容希望能幫助到你,我們來一起看看吧!

python中的queue實現(python進程間通信-Queue)1

python中的queue實現

進程間通信-Queue

Process之間有時需要通信,操作系統提供了很多機制來實現進程間的通信。

1. Queue的使用

可以使用multiprocessing模塊的Queue實現多進程之間的數據傳遞,Queue本身是一個消息列隊程序,首先用一個小實例來演示一下Queue的工作原理:

#coding=utf-8 from multiprocessing import Queue q=Queue(3) #初始化一個Queue對象,最多可接收三條Put消息 q.put("消息1") q.put("消息2") print(q.full()) #False q.put("消息3") print(q.full()) #True #因為消息列隊已滿下面的try都會抛出異常,第一個try會等待2秒後再抛出異常,第二個Try會立刻抛出異常 try: q.put("消息4",True,2) except: print("消息列隊已滿,現有消息數量:%s"%q.qsize()) try: q.put_nowait("消息4") except: print("消息列隊已滿,現有消息數量:%s"%q.qsize()) #推薦的方式,先判斷消息列隊是否已滿,再寫入 if not q.full(): q.put_nowait("消息4") #讀取消息時,先判斷消息列隊是否為空,再讀取 if not q.empty(): for i in range(q.qsize()): print(q.get_nowait())

運行結果:

False True 消息列隊已滿,現有消息數量:3 消息列隊已滿,現有消息數量:3 消息1 消息2 消息3

說明

初始化Queue()對象時(例如:q=Queue()),若括号中沒有指定最大可接收的消息數量,或數量為負值,那麼就代表可接受的消息數量沒有上限(直到内存的盡頭);

Queue.qsize():返回當前隊列包含的消息數量;

Queue.empty():如果隊列為空,返回True,反之False ;

Queue.full():如果隊列滿了,返回True,反之False;

Queue.get([block[, timeout]]):獲取隊列中的一條消息,然後将其從列隊中移除,block默認值為True;

1)如果block使用默認值,且沒有設置timeout(單位秒),消息列隊如果為空,此時程序将被阻塞(停在讀取狀态),直到從消息列隊讀到消息為止,如果設置了timeout,則會等待timeout秒,若還沒讀取到任何消息,則抛出"Queue.Empty"異常;

2)如果block值為False,消息列隊如果為空,則會立刻抛出"Queue.Empty"異常;

,

更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!

查看全部

相关生活资讯推荐

热门生活资讯推荐

网友关注

Copyright 2023-2024 - www.tftnews.com All Rights Reserved