python 程序間共享資料 三

2022-07-29 19:42:15 字數 878 閱讀 5985

python的multiprocessing模組包裝了底層的機制,提供了queue、pipes等多種方式來交換資料。

我們以queue為例,在父程序中建立兩個子程序,乙個往queue裡寫資料,乙個從queue裡讀資料:

from multiprocessing import process, queue

import os, time, random

# 寫資料程序執行的**:

def write(q):

for value in ['a', 'b', 'c']:

print 'put %s to queue...' % value

q.put(value)

time.sleep(random.random())

# 讀資料程序執行的**:

def read(q):

while true:

value = q.get(true)

print 'get %s from queue.' % value

if __name__=='__main__':

# 父程序建立queue,並傳給各個子程序:

q = queue()

pw = process(target=write, args=(q,))

pr = process(target=read, args=(q,))

# 啟動子程序pw,寫入:

pw.start()

# 啟動子程序pr,讀取:

pr.start()

# 等待pw結束:

pw.join()

# pr程序裡是死迴圈,無法等待其結束,只能強行終止:

pr.terminate()

from : 網上整理

python 管道,程序間的資料共享

一.管道 管道傳輸資料是不安全的,佇列是安全的 匯入管道 from multiprocessing import pipe 建立管道 pipe duplex 在程序之間建立一條管道,並返回元組 conn1,conn2 其中conn1,conn2表示管道兩端的連線物件.管道的建立必須在process物...

程序間通訊 三 共享記憶體

共享記憶體是linux下倆程序通訊的一種方式,主要功能是讓兩個程序的虛擬位址都對映到同一片實體地址上,就可以通過這片實體地址進行資料的互動 mmap函式要求核心建立乙個新的虛擬記憶體區域,最好是從位址start開始的乙個區域,並將檔案描述符df指定的物件的乙個連續的片對映到這個新的區域,連續的物件片...

程序間通訊(三) 共享記憶體

共享記憶體區是最快的ipc形式。一旦這樣的記憶體對映到共享他的程序的位址空間,這些程序間資料傳遞不再涉及到核心,換句話說就是程序不再通過執行進入核心的系統呼叫來傳遞彼此的資料。共享記憶體示意圖 共享記憶體資料結構 struct shmid ds 相關函式shmget函式 建立共享記憶體 int sh...