python提供了4種方式來滿足程序間的資料通訊
1. 使用multiprocessing.queue可以在程序間通訊,但不能在pool池建立的程序間進行通訊
2. 使用multiprocessing.manager.queue可以在pool程序池建立的程序間進行通訊
3. 通過pipe進行執行緒間的通訊, pipe程序間通訊的效能高於queue,但是它只能在兩個程序間進行通訊
4. 使用manager類提供的資料結構可以進行程序間的通訊
from multiprocessing import process, queue, pool, manager, pipe
# 注意執行緒間的通訊,使用的queue.queue
# from queue import queue
import time
# 1. 使用multiprocessing.queue可以在程序間通訊
# def producer(queue):
# queue.put('a')
# time.sleep(2)
## def consumer(queue):
# time.sleep(2)
# data = queue.get()
# print(data)
## if __name__ == '__main__':
# queue= queue(10)
# p = process(target=producer, args=(queue,))
# c = process(target=consumer, args=(queue,))
# p.start()
# c.start()
# p.join()
# c.join()
# 2. 使用共享全域性變數,在多程序間通訊(結論: 不行)
# def producer(a):
# a += 1
# time.sleep(2)##
# def consumer(a):
# time.sleep(2)
# print(a)
## if __name__ ==程式設計客棧 '__main__':
# a = 1
# p = process(target=producer, args=(a,))
# c = process(target=consumer, args=(a,))
# p.start()
# c.start()
# p.join()
# c.join()
# 3. multiprocessing.queue不能用於multiprocessing.pool程序池建立的程序間進行通訊
# def producer(queue):
# queue.put('a')
# time.sleep(2)##
# def consumer(queue):
# time.sleep(2)
# data = queue.get()
# print("consumer:%s" % data)##
# if __name__ == '__main__':
# # queue = queue(10) # 這個是使用multiprocessing.queue,無效
# queue = manager().queue(10) # 這個是使用multiprocessing.manager.queue, 可以
# pool = pool(2)
# pool.apply_async(producer, www.cppcns.comargs=(queue,))
# pool.apply_async(consumer, args=(queue,))
# pool.close()
# pool.join()
# 4.通過pipe進行執行緒間的通訊, pipe程序間通訊的效能高於queue
# def producer(pipe):
# pipe.send('admin')##
# def consumer(pipe):
# data = pipe.recv()
# print("consumer:%s" % data)##
# if __name__ == '__main__':
# receive_pipe, send_pipe = pipe()
# """pipe只能適應於兩個程序間的通訊"""
# p = process(target=producer, args=(send_pipe,))
# c = process(target=consumer, args=(receive_pipe,))
# p.start()
# c.start()
# p.join()
# c.join()
# 5. 程序間通訊的其它方式
def add_data(p_dict, key, value):
p_dict[key] = value
if __name__ == '__main__':
progress_dict = manager().dict(程式設計客棧) #manager()類中提供的資料結構都能夠做到程序的通訊
first_progress = pmiyfuwrocess(target=add_data, args=(progress_dict, 'name', 'admin',))
second_progress = process(target=add_data, args=(progress_dict, 'age', 45,))
first_progress.start()
second_prwww.cppcns.comogress.start()
first_progress.join()
second_progress.join()
print(progress_dict) #
本文標題: python通過4種方式實現程序資料通訊
本文位址:
實現會話追蹤的4種方式
1.會話 由於http是無狀態的,因此無法紀錄客戶的一連串的動作,必須有一種機制使伺服器能認得客戶,這就引入了 會話 概念 客戶端開啟與伺服器的連線發出請求到伺服器響應客戶端請求的全過程。2.會話跟蹤 瀏覽器與伺服器之間的通訊是通過http協議進行通訊的,而http協議是 無狀態 的協議,它不能儲存...
1 zabbix 通過docker安裝方式進行部署
zabbix官網提供豐富的安裝方式,適應伺服器的複雜環境。此文主要介紹docker映象安裝方法 進入zabbix container images 模組 通過 docker ps a 檢視所有容器列表,確認是否容器建立成功,且status 狀態為up 如果未成功建立,可通過 docker logs ...
4種排序方式
四種排序方式從時間複雜度和空間複雜度比較 排序法最差時間分析 平均時間複雜度 穩定度空間複雜度 氣泡排序 o n2 o n2 穩定o 1 快速排序 o n2 o n log2n 不穩定o log2n o n 選擇排序 o n2 o n2 穩定o 1 二叉樹排序 o n2 o n log2n 不一定o...