"""
1、用一個隊列來存儲數據
2、創建一個專門生產數據的任務函數,循環生產5次數據,每輪循環,往隊列中添加20條數據,每循環一輪暫停1秒
3、創建一個專門處理數據的任務函數 循環獲取隊列中的數據處理,每秒處理4條數據。
4、創建一個線程(或進程)生產數據 ,3個線程(或進程)處理數據
5、統計數據生產并獲取完 程序運行的總時長
"""
# ===============多線程實現============================
import time
from queue import Queue
from threading import Thread
q = Queue()
def add_data():
"""生產數據"""
for i in range(5):
for j in range(20):
data = "數據--{}---{}".format(i, j)
q.put(data)
print("【生產數據】{}".format(data))
time.sleep(1)
def handle_data():
"""處理數據"""
while True:
for i in range(4):
try:
data = q.get(timeout=1)
except:
return
else:
print("【處理數據】", data)
q.task_done()
time.sleep(1)
# def handle_data():
# """處理數據"""
# while not q.empty():
# try:
# data = q.get(timeout=1)
# except:
# return
# else:
# q.task_done()
# time.sleep(0.25)
def main():
"""啟動函數"""
t1 = Thread(target=add_data)
t1.start()
for i in range(3):
Thread(target=handle_data).start()
# 等待數據生完
t1.join()
# 等待隊列中的數據處理完
q.join()
if __name__ == '__main__':
st = time.time()
main()
et = time.time()
print("程序運行總時長:", et - st)
"""
1、用一個隊列來存儲數據
2、創建一個專門生產數據的任務函數,循環生產5次數據,每輪循環,往隊列中添加20條數據,每循環一輪暫停1秒
3、創建一個專門處理數據的任務函數 循環獲取隊列中的數據處理,每秒處理4條數據。
4、創建一個線程(或進程)生產數據 ,3個線程(或進程)處理數據
5、統計數據生產并獲取完 程序運行的總時長
"""
# ===============多線程實現============================
import time
from queue import Queue
from threading import Thread
q = Queue()
def add_data():
"""生產數據"""
for i in range(5):
for j in range(20):
data = "數據--{}---{}".format(i, j)
q.put(data)
print("【生產數據】{}".format(data))
time.sleep(1)
def handle_data():
"""處理數據"""
while True:
for i in range(4):
try:
data = q.get(timeout=1)
except:
return
else:
print("【處理數據】", data)
q.task_done()
time.sleep(1)
def main():
"""啟動函數"""
t1 = Thread(target=add_data)
t1.start()
for i in range(3):
Thread(target=handle_data).start()
# 等待數據生完
t1.join()
# 等待隊列中的數據處理完
q.join()
if __name__ == '__main__':
st = time.time()
main()
et = time.time()
print("程序運行總時長:", et - st)
進程與線程的經典練習題
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。
- 文/潘曉璐 我一進店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人,你說我怎么就攤上這事。” “怎么了?”我有些...
- 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發上,一...
- 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了?” 一聲冷哼從身側響起,我...
推薦閱讀更多精彩內容
- C語言是面向過程的,而C++是面向對象的 C和C++的區別: C是一個結構化語言,它的重點在于算法和數據結構。C程...
- 題目 寫兩個線程,一個線程打印1-52,另一個線程打印A-Z,打印順序為12A34B56C......5152Z。...