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方法用於將資料插...