python中程序間通訊
阿新 • • 發佈:2019-02-07
程序間通訊:
磁碟互動
1,速度慢
2,不安全
socket 本地套接字管道 訊息列隊 共享記憶體 訊號 訊號量 套接字管道通訊 Pipe
在記憶體中開闢一塊空間,對多個程序可見,通過管道
,多個程序進行通訊 multiprocessing --> Pipe fd1,fd2 = Pipe(duplex = True)
功能 : 建立一個管道
引數 : duplex預設為True 表示雙向管道
設定為False則表示單向管道
返回值:返回兩個管道流物件,表示管道的兩端
如果是雙向管道則兩個均可讀寫
如果為單向管道,則fd1只能讀,fd2只能寫 接收訊息: fd1.recv()
傳送訊息: fd2.send() fd1.recv()
功能:接收訊息(沒次接收一條)
引數“無
返回值:接受到訊息
*如果管道沒有訊息會阻塞 fd2.send():
功能:訊息傳送,可以是字串或其他型別
引數: 要傳送的內容
*如果沒有接收端則管道破裂訊息佇列:
佇列:先進先出
在記憶體中開闢佇列迷行,用來存放訊息,
任何擁有佇列的程序都可以存取訊息 佇列的建立:
q = Queue(maxsize = 0)
功能:建立一個訊息佇列
引數:maxsize預設為0便是佇列可存放訊息由記憶體而定
> 0 表示對列最多存放多少條訊息
返回值:返回訊息佇列物件 q.put()
功能:向佇列中存放訊息(字串 整數 列表)
引數:要存的訊息
*當佇列滿時會阻塞
q.full()
判斷佇列是否為滿 滿返回True
q.get()
功能:向佇列中取出訊息
返回值:取出的訊息
*當佇列空時會阻塞
q.empty()
判斷佇列是否為空,空返回True
q.qsize()
得到當前佇列中訊息的個數
q.close() 關閉佇列 *put get中均有可選引數 block 和timeout
block預設為True 表示阻塞函式 如果設定為False則不阻塞
timeout block 為True時,設定超時時間
共享記憶體:
在記憶體中開闢一段空間,儲存資料 對多個程序可見
每次寫入共享記憶體的資料會覆蓋之前的內容 由於對
記憶體格式化較少所以存取速度快 from multiprocessing import Value,Array
obj = Value(ctype,obj)
功能:開闢共享記憶體空間
引數:ctype str 要轉變的c型別(對照ctype表)
obj 寫入共享記憶體的初始值
返回值: 返回一個共享記憶體的物件
obj.value 即可得到共享記憶體車內的值 obj = Array(ctype,obj)
功能:開闢共享記憶體空間
引數:ctype 要轉換的型別
obj 存入到共享記憶體中的資料
是一個列表,要求列表中數型別一致
正整數,則表示開闢一個多大的序列空間
返回值:返回一個共享記憶體物件
磁碟互動
1,速度慢
2,不安全
socket 本地套接字管道 訊息列隊 共享記憶體 訊號 訊號量 套接字管道通訊 Pipe
在記憶體中開闢一塊空間,對多個程序可見,通過管道
,多個程序進行通訊 multiprocessing --> Pipe fd1,fd2 = Pipe(duplex = True)
功能 : 建立一個管道
引數 : duplex預設為True 表示雙向管道
設定為False則表示單向管道
返回值:返回兩個管道流物件,表示管道的兩端
如果是雙向管道則兩個均可讀寫
如果為單向管道,則fd1只能讀,fd2只能寫 接收訊息: fd1.recv()
傳送訊息: fd2.send() fd1.recv()
功能:接收訊息(沒次接收一條)
引數“無
返回值:接受到訊息
*如果管道沒有訊息會阻塞 fd2.send():
功能:訊息傳送,可以是字串或其他型別
引數: 要傳送的內容
*如果沒有接收端則管道破裂訊息佇列:
佇列:先進先出
在記憶體中開闢佇列迷行,用來存放訊息,
任何擁有佇列的程序都可以存取訊息 佇列的建立:
q = Queue(maxsize = 0)
功能:建立一個訊息佇列
引數:maxsize預設為0便是佇列可存放訊息由記憶體而定
> 0 表示對列最多存放多少條訊息
返回值:返回訊息佇列物件 q.put()
功能:向佇列中存放訊息(字串 整數 列表)
引數:要存的訊息
*當佇列滿時會阻塞
q.full()
判斷佇列是否為滿 滿返回True
q.get()
功能:向佇列中取出訊息
返回值:取出的訊息
*當佇列空時會阻塞
q.empty()
判斷佇列是否為空,空返回True
q.qsize()
得到當前佇列中訊息的個數
q.close() 關閉佇列 *put get中均有可選引數 block 和timeout
block預設為True 表示阻塞函式 如果設定為False則不阻塞
timeout block 為True時,設定超時時間
共享記憶體:
在記憶體中開闢一段空間,儲存資料 對多個程序可見
每次寫入共享記憶體的資料會覆蓋之前的內容 由於對
記憶體格式化較少所以存取速度快 from multiprocessing import Value,Array
obj = Value(ctype,obj)
功能:開闢共享記憶體空間
引數:ctype str 要轉變的c型別(對照ctype表)
obj 寫入共享記憶體的初始值
返回值: 返回一個共享記憶體的物件
obj.value 即可得到共享記憶體車內的值 obj = Array(ctype,obj)
功能:開闢共享記憶體空間
引數:ctype 要轉換的型別
obj 存入到共享記憶體中的資料
是一個列表,要求列表中數型別一致
正整數,則表示開闢一個多大的序列空間
返回值:返回一個共享記憶體物件