1. 程式人生 > >Python基礎(八)---程序間通訊-Queue

Python基礎(八)---程序間通訊-Queue

程序之間需要通訊,作業系統提供了很多機制來實現程序間的通訊

1.multiprocessing模組的QUEUE實現多程序之間的資料傳遞。Queue本身是一個訊息佇列程式。

初始化一個Queue物件 q=Queue(num),num 表示最多接收的訊息數量,如果不指定,或數量為負數,那麼久代表可接收的訊息數量沒有上限,直到記憶體的盡頭;

  • Queue.qsize():返回當前佇列包含的訊息數量
  • Queue.empty(),返回FALSE 或TRUE,表示佇列是否為空
  • Queue.full(),返回false或TRUE,表示佇列是否滿了
  • Queue.get([block[,timeout]]):獲取佇列中的一條訊息,然後從佇列中移除。block值預設為TRUE

如果block使用預設值,且沒有設定timeout,訊息佇列如果為空,此時程式將被阻塞(停在讀取狀態),直到訊息佇列讀到訊息為止。如果設定了timeout,會等待timeout秒,如果還沒讀取到任何訊息,就丟擲異常。

如果block值為false,訊息佇列如果為空,則會立即丟擲一樣。

  • Queue.get_nowait():相當Queue.get(False);

  • Queue.put(item,[block[, timeout]]):將item訊息寫入佇列,block預設值為True;

如果使用預設值。且沒有設定timeout,訊息佇列如果已經沒有空間可寫入,程式會被阻塞。

如果設定了timeout,等待timeout秒,若還沒有空間,則丟擲異常

如果block使用false,訊息佇列如果沒有空間寫入,會立刻丟擲異常。

  • Queue.put_nowait(item):相當Queue.put(item, False);
如果使用程序池建立程序,需要使用multiprocessing.Manager()中的Queue()。

相關推薦

Python基礎---程序通訊-Queue

程序之間需要通訊,作業系統提供了很多機制來實現程序間的通訊 1.multiprocessing模組的QUEUE實現多程序之間的資料傳遞。Queue本身是一個訊息佇列程式。 初始化一個Queue物件 q=Queue(num),num 表示最多接收的訊息數量,如果不指定,或數量

Python基礎-系統程式設計之程序--multiprocessing阻塞非阻塞

程序擁有自己獨立的堆和棧,既不共享堆,亦不共享棧,程序由作業系統排程。 執行緒擁有自己獨立的棧和共享的堆,共享堆,不共享棧,執行緒亦由作業系統排程(標準執行緒是的)。 協程和執行緒一樣共享堆,不共享棧,協程由程式設計師在協程的程式碼裡顯示排程 multiproces

python基礎:函數

int 工具 位置 spa 不能 lte for fun 接下來 函數就是將一些語句集合在一起的部件,他們能夠不止一次的程序中運行,函數還能夠計算出一個返回值,並能夠改變作為函數輸入的參數。而這些參數在代碼運行時每次都不同。以函數的形式去編寫一個操作可以使它

Python基礎之 set 集合

全部測試程式碼 #!/usr/bin/env python3 #_*_ conding:utf-8 _*_ #set是一組key的集合,但是沒有重複的key,重複的值自動被過濾 # 建立一個set,以list作為輸入集合,輸出的資料用大括號{}顯示,且是無序的 s=set([1

程序通訊方式-----訊息佇列

訊息佇列 訊息佇列,是訊息的連結表,存放在核心中。一個訊息佇列由一個識別符號(即佇列ID)來標識。使用者程序可以向訊息佇列新增訊息,也可以向訊息佇列讀取訊息。 同管道檔案相比,訊息佇列中的每個訊息指定特定的訊息型別,接收的時候可以不需要按照佇列次序讀取,可以根據自定義型別

人工智慧PythonNet—— 程序通訊管道、訊息佇列、共享記憶體、訊號、訊號量、套接字

一、程序間通訊        程序間通訊(IPC,InterProcess Communication)是指在不同程序之間傳播或交換資訊。        由於每個程序的空間是互相獨立的,程序之間無法互相直接獲取彼此的資源,故引入程序間通訊來實現程序間的資源互動。       

Android——IPC機制程序通訊方式

在上一章中,我們已經介紹了IPC的幾個基礎知識:序列化和Binder,本章將詳細介紹各種跨程序同行方式。具體的方式有很多,比如可以通過在Intent中附加extras來傳遞資訊,或者通過共享檔案的方式來共享資料,還可以採用Binder的方式來跨程序通訊,另外Co

Linux 程序通訊共享記憶體

上篇部落格我們講了,匿名管道,命名管道,訊息佇列,並使用了他們,初步瞭解了程序間通訊的概念。下面我們要說共享記憶體。 共享記憶體函式 shmget函式 功能:用來建立共享記憶體 原型 int shmget(key_t key,size_t si

Python基礎16_面向對象程序設計類、繼承、派生、組合、接口

特征 abc 有效 相同 現實 父類 student 需求 ict 一、面向過程程序設計與面向對象程序設計 面向過程的程序設計:核心是過程,過程就解決問題的步驟,基於該思想設計程序就像是在設計一條流水線,是一種機械式的思維方式 優點:復雜的問題的簡單化,流程化

程序程序通訊 —— Queue佇列和Pipe管道

目錄 程序間通訊 佇列  概念介紹 方法介紹 程式碼例項 生產者消費者模型 JoinableQueue([maxsize])  管道(瞭解) 程序間通訊 IPC(Inter-Process Communication) 佇列&nbs

python之Linux基礎

⽂件壓縮解壓:bzip2tar與bzip2命令結合使⽤實現⽂件打包、壓縮(⽤法和gzip⼀樣)。tar只負責打包⽂件,但不壓縮,⽤bzip2壓縮tar打包後的⽂件,其副檔名⼀般⽤ xxxx.tar.gz2。在tar命令中增加⼀個選項(-j)可以調⽤bzip2實現了⼀個壓縮的功能,實⾏⼀個先打包後壓 縮的過程。

多工程序, 程序通訊-Queue ,程序

1. 程序 程式:例如xxx.py這是程式,是一個靜態的 程序:一個程式執行起來後,程式碼+用到的資源 稱之為程序,它是作業系統分配資源的基本單元。 不僅可以通過執行緒完成多工,程序也是可以的 2. 程序的狀態 工作中,任務數往往大於cpu的核數,即一定有一些任務正在

linux (五程序通訊匿名管道,命名管道,訊息佇列

程序間通訊 程序間通訊的目的 資料傳輸:一個程序需要將他的資料傳送給另一個程序 資源共享:多個程序之間共享同樣的資源 通知事件:一個程序需要向另一個或一組程序傳送訊息,通知它發生了某種事件(如程序終止時要通知父程序) 程序控制:有寫程序希望完全控制另一

Python資料分析基礎——時間序列

時間序列資料是一種重要的結構化資料形式。 datetime模組中的資料型別 型別 說明 date 以公曆形式儲存日曆日期(年、月、日) time 將時間儲存為時、分、秒、毫秒 datetime 儲存日期和時間 timedelta 表示兩個datetim

小白學 Python 爬蟲41:爬蟲框架 Scrapy 入門基礎對接 Splash 實戰

人生苦短,我用 Python 前文傳送門: 小白學 Python 爬蟲(1):開篇 小白學 Python 爬蟲(2):前置準備(一)基本類庫的安裝 小白學 Python 爬蟲(3):前置準備(二)Linux基礎入門 小白學 Python 爬蟲(4):前置準備(三)Docker基礎入門 小白學 Pyth

Docker學習容器單向通訊

Docker學習(八)容器間單向通訊 前言 在之前的文章中介紹的內容都是容器映象和容器執行,沒有涉及到多個容器之前通訊,如果是多個容器之間需要互相呼叫,如何通訊呢? docker維護著每個容器的元資訊,可以通過IP通訊,但是在docker環境中每個容器重啟之後,容器的虛擬IP都會變動,這樣的情況下我們該如

python基礎----字符編碼以及文件處理

odin mod window 存儲空間 表示 一行 內存數據 rec 錯誤 字符編碼與文件處理 一.字符編碼 由字符翻譯成二進制數字的過程 字符--------(翻譯過程)------->數字 這個過程實際就是一個字符如何對應一個特定數字的標準,這個標準

Python基礎6_函數

傳遞 獲得 不執行 分配 參數 code else turn 依賴 一 為何要有函數? 不加區分地將所有功能的代碼壘到一起,問題是:   代碼可讀性差   代碼冗余   代碼可擴展差 如何解決?  函數即工具,事先準備工具的過程是定義函數,拿來就用指的就是函數調

Python基礎11_python模塊之time模塊、rando模塊、hashlib、os模塊

路徑 固定 val 登錄密碼 rand getcwd ges ble sun 一、模塊 1、什麽是模塊:一個模塊就是一個包含了python定義和聲明的文件,文件名就是模塊名字加上.py的後綴   模塊的本質:模塊的本質是一個py文件 2、模塊分為三類:1)內置模塊;2)第三

Python基礎10分解質因數

pen [] 基礎 app 分解質因數 pytho 分解 bsp python import mathsu=[]for i in range(100,1000): a=i/100 b=(i-100*a)/10 #b=i/10%10 c=i-100