Python多程序 程序間通訊

2021-08-14 08:58:08 字數 1689 閱讀 7901

1. 使用multiprocessing模組建立的程序之間的通訊

# -*- coding:utf-8 -*-

"""queue類常用屬性和方法:

__init__(self, maxsize=-1)

qsize(),

full()

empty()

put(obj, block=true, timeout=none)

put_nowait(obj)

get(block=true, timeout=none)

get_nowait()

"""import os,time

from multiprocessing import process,queue

def write(q):

for c in "abcdef":

time.sleep(1)

if q.full():

print("訊息佇列已滿")

else:

q.put(c)

print("程序{}寫入{}".format(os.getpid(),c))

def read(q):

while not q.empty():

time.sleep(1)

c=q.get()

print("程序{}讀取{}".format(os.getpid(),c))

else:

print("訊息隊列為空")

def main():

q=queue()

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

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

pwrite.start()

pwrite.join()

pread.start()

pread.join()

if __name__ == '__main__':

main()

2. 使用pool程序池建立的程序之間的通訊

# -*- coding:utf-8 -*-

"""q=manager().queue()

"""from multiprocessing import pool,manager

import time,os

def write(q):

for c in "abcdef":

time.sleep(1)

if q.full():

print("訊息佇列已滿")

else:

q.put(c)

print("程序{}寫入{}".format(os.getpid(),c))

def read(q):

while not q.empty():

time.sleep(1)

c=q.get()

print("程序{}讀取{}".format(os.getpid(),c))

else:

print("訊息隊列為空")

def main():

q=manager().queue()

ps=pool(2)

ps.close()

ps.join()

if __name__ == '__main__':

main()

python多程序實現程序間通訊

python中的多執行緒其實並不是真正的多執行緒,如果想要充分地使用多核cpu的資源,在python中大部分情況需要使用多程序。python提供了非常好用的多程序包multiprocessing,只需要定義乙個函式,python會完成其他所有事情。借助這個包,可以輕鬆完成從單程序到併發執行的轉換。m...

python 多程序 高階 程序間通訊之Queue

假如建立了大量的程序,那程序間通訊是必不可少的。python提供了多種程序間通訊的方式,如 queue和pipe方法。他們兩者的區別在於pipe常用來在兩個程序間通訊,queue用來在多個程序間實現通訊 queue是多程序安全的佇列,可以使用queue實現多程序之間的資料傳遞。有兩個方法 put 和...

python多程序通訊

這是看書筆記 python提供了多種程序通訊的方式,比如說queue,pipe,value array等。其中queue主要用來在多個程序之間實現通訊。pipe常用來在兩個程序之間實現通訊。queue是多程序安全佇列,queue通過put和get方法來實現多程序之間的資料傳遞。put方法用於將資料插...