Python 進(jìn)程操作之進(jìn)程間通過隊(duì)列共享數(shù)據(jù),隊(duì)列Queue簡單示例
本文實(shí)例講述了Python 進(jìn)程操作之進(jìn)程間通過隊(duì)列共享數(shù)據(jù),隊(duì)列Queue。分享給大家供大家參考,具體如下:
隊(duì)列中的數(shù)據(jù)是放在內(nèi)存中的,可以通過分布式緩存redis優(yōu)化隊(duì)列。
demo.py(進(jìn)程通過隊(duì)列共享數(shù)據(jù)):
import multiprocessing
def download_from_web(q):
"""下載數(shù)據(jù)"""
# 模擬從網(wǎng)上下載的數(shù)據(jù)
data = [11, 22, 33, 44]
# 向隊(duì)列中寫入數(shù)據(jù)
for temp in data:
q.put(temp) # 隊(duì)列中寫數(shù)據(jù),隊(duì)列滿了會阻塞。 put_nowait() 隊(duì)列滿了會拋異常
print("---下載器已經(jīng)下載完了數(shù)據(jù)并且存入到隊(duì)列中----")
def analysis_data(q):
"""數(shù)據(jù)處理"""
waitting_analysis_data = list()
# 從隊(duì)列中獲取數(shù)據(jù)
while True:
data = q.get() # 隊(duì)列中讀數(shù)據(jù),隊(duì)列空了會阻塞。 get_nowait() 隊(duì)列空了會拋異常
waitting_analysis_data.append(data)
if q.empty(): # 隊(duì)列是否為空。 q.full() 隊(duì)列是否滿了。
break
# 模擬數(shù)據(jù)處理
print(waitting_analysis_data)
def main():
# 1. 創(chuàng)建一個(gè)隊(duì)列 (先進(jìn)先出)
q = multiprocessing.Queue(10) # 最多放10個(gè)數(shù)據(jù)。 如果不指定長度,默認(rèn)最大(和硬件相關(guān))
# 2. 創(chuàng)建多個(gè)進(jìn)程,將隊(duì)列的引用當(dāng)做實(shí)參進(jìn)行傳遞
p1 = multiprocessing.Process(target=download_from_web, args=(q,))
p2 = multiprocessing.Process(target=analysis_data, args=(q,))
p1.start()
p2.start()
if __name__ == "__main__":
main()
運(yùn)行結(jié)果:
---下載器已經(jīng)下載完了數(shù)據(jù)并且存入到隊(duì)列中----
[11, 22, 33, 44]
更多關(guān)于Python相關(guān)內(nèi)容感興趣的讀者可查看本站專題:《Python進(jìn)程與線程操作技巧總結(jié)》、《Python數(shù)據(jù)結(jié)構(gòu)與算法教程》、《Python函數(shù)使用技巧總結(jié)》、《Python字符串操作技巧匯總》、《Python入門與進(jìn)階經(jīng)典教程》、《Python+MySQL數(shù)據(jù)庫程序設(shè)計(jì)入門教程》及《Python常見數(shù)據(jù)庫操作技巧匯總》
希望本文所述對大家Python程序設(shè)計(jì)有所幫助。
- 詳解python數(shù)據(jù)結(jié)構(gòu)之隊(duì)列Queue
- Python多線程通信queue隊(duì)列用法實(shí)例分析
- Python高級編程之消息隊(duì)列(Queue)與進(jìn)程池(Pool)實(shí)例詳解
- python程序 線程隊(duì)列queue使用方法解析
- Python進(jìn)程間通信Queue消息隊(duì)列用法分析
- python隊(duì)列Queue的詳解
- python隊(duì)列queue模塊詳解
- Python3 queue隊(duì)列模塊詳細(xì)介紹
- python中利用隊(duì)列asyncio.Queue進(jìn)行通訊詳解
- Python數(shù)據(jù)結(jié)構(gòu)之優(yōu)先級隊(duì)列queue用法詳解
相關(guān)文章
mac PyCharm添加Python解釋器及添加package路徑的方法
今天小編就為大家分享一篇mac PyCharm添加Python解釋器及添加package路徑的方法,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-10-10
python實(shí)現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對全部變成小寫
今天小編就為大家分享一篇python實(shí)現(xiàn)創(chuàng)建新列表和新字典,并使元素及鍵值對全部變成小寫,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2019-01-01
Django實(shí)現(xiàn)快速分頁的方法實(shí)例
分頁是我們?nèi)粘i_發(fā)中必不可少的一個(gè)功能,下面這篇文章主要給大家介紹了關(guān)于Django如何實(shí)現(xiàn)快速分頁的方法,文中通過示例代碼介紹的非常詳細(xì),需要的朋友可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-10-10
django template實(shí)現(xiàn)定義臨時(shí)變量,自定義賦值、自增實(shí)例
這篇文章主要介紹了django template實(shí)現(xiàn)定義臨時(shí)變量,自定義賦值、自增實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法
這篇文章主要介紹了使用Python生成200個(gè)激活碼的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-11-11

