程序之間通訊

2022-09-03 03:24:05 字數 2102 閱讀 4388

之所以開啟子程序 ,肯定需要他幫我們完成任務,很多情況下,需要將資料返回給父程序。

然而程序記憶體是物理隔離的

1.將共享資料放在檔案中,就是慢

2.管道subprocess 中那個管道只能單向通訊,必須有父子關係

3.共享一塊記憶體區域 得作業系統幫你分配,速度快

from multiprocessing import

process,manager

import

time

deftask(dic):

print("

子程序"

) dic["a

"] = 1

if__name__ == '

__main__':

#manager 繼承之間專用的與外界

m = manager()#

開闢專用記憶體空間

dic = m.dict({})#

在這塊記憶體空間生成乙個字典

#生成公共區域的字典

p = process(target=task,args=(dic,))

p.start()

time.sleep(3)#

因為程序開啟速度較為慢,所以先執行父程序

print(dic["

a"])

queue佇列

佇列的特點:

先進先出

後進後出

就放扶梯一樣

from multiprocessing import

process,queue

deftask(queue):

for i in range(3):

queue.put(i)

#將資料放入佇列

if__name__ == '

__main__':

q =queue()

p = process(target=task,args =(q,))

p.start()

print(q.get())#

取值規範先進先出

print

(q.get())

print(q.get())

同時queue佇列中訪問值,存在阻塞,也可通過修改引數來使得

from multiprocessing import

process,queue

import

time

q = queue(3)#

限定管道中可以存放多少屬性

q.put("

hello

",block=false)#

當管道已經存滿的話,存放是否接受阻塞,true接受阻塞,false不接受阻塞

q.put("

world

",block=false)

q.put(

"nice

",block=false)

#q.put("12333",block=false)#放不下的直接異常 queue.full

print(q.get(block=false))

print(q.get(block=false))

print(q.get(block=false))

#print(q.get(block=false))#當管道被被取空的話,是否接受阻塞,true接受阻塞,false不接受阻塞

#異常 _queue.empty

timeout屬性表示願意等待的時間

#

了解q = queue(3)

q.put("q

",timeout=3)

q.put("q2

",timeout=3)

q.put("q3

",timeout=3)

#如果滿了 願意等3秒 如果3秒後還存不進去 就炸

#q.put("q4",timeout=3)

print(q.get(timeout=3))

print(q.get(timeout=3))

print(q.get(timeout=3))

#如果沒了 願意等3秒 如果3秒後還取不到資料 就炸

print(q.get(timeout=3))

WPF程序之間通訊

準備 使用copydata,wm user只能用於應用程式內部的通訊,跨程序用copydata public const int wm copydata 0x004a 查詢目標傳送窗體 dllimport user32.dll entrypoint findwindow public static ...

程序之間 執行緒之間的通訊方式

1 程序間的8中通訊方式 1 無名管道 pipe 管道是一種半雙工的通訊方式,資料只能單向流動,而且只能在具有親緣關係的程序間使用。程序的親緣關係通常是指父子程序關係。2 2 高階管道 popen 將另乙個程式當做乙個新的程序在當前程式程序中啟動,則它算是當前程式的子程序,這種方式我們成為高階管道方...

程序之間的通訊 訊號通訊

訊號通訊 方式 訊號型別 下面是幾種常見的訊號 sighup 從終端上發出的結束訊號 sigint 來自鍵盤的中斷訊號 ctrl c sigkill 該訊號結束接收訊號的程序,殺死程序 sigterm kill 命令發出的訊號 sigchld 子程序停止或結束時通知父程序 sigstop 來自鍵盤 ...