91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

python多線程中子線程和主線程如何相互通信

發布時間:2021-08-12 13:40:53 來源:億速云 閱讀:325 作者:小新 欄目:開發技術

這篇文章主要介紹python多線程中子線程和主線程如何相互通信,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!

需求:主線程開啟了多個線程去干活,每個線程需要完成的時間不同,但是在干完活以后都要通知給主線程

下面上代碼:

#!/usr/bin/python
# coding:utf8
'''
多線程和queue配合使用,實現子線程和主線程相互通信的例子
'''
import threading
 
__author__ = "Kenny.Li"
 
import Queue
import time
import random
 
q = Queue.Queue()
 
 
class MyThread(threading.Thread):
 def __init__(self, q, t, j):
  super(MyThread, self).__init__()
  self.q = q
  self.t = t
  self.j = j
 
 def run(self):
  time.sleep(self.j)
  self.q.put(u"我是第%d個線程,我睡眠了%d秒,當前時間是%s" % (self.t, self.j, time.ctime()))
 
 
count = 0
threads = []
for i in xrange(15):
 j = random.randint(1, 8)
 threads.append(MyThread(q, i, j))
for mt in threads:
 mt.start()
print "start time: ", time.ctime()
while True:
 if not q.empty():
  print q.get()
  count += 1
 if count == 15:
  break

下面對以上代碼進行解釋:

1,q 是實例化了的隊列對象,具有FIFO性。首先定義一個自己的線程類,重寫run方法。注意在構造方法中傳入q隊列,用于接收每個線程需要返回的消息

2,第26行,通過q.put()方法,將每個子線程要返回給主線程的消息,存到隊列中。

3,從第31行開始,生成15個子線程,加入到線程組里,每個線程隨機睡眠1-8秒(模擬每個線程干活時間的長短不同)

4,第34-35行,循環開啟所有子線程

5,第36行,打印開始時間

6,通過一個while循環,當q隊列中不為空時,通過q.get()方法,循環讀取隊列q中的消息,每次計數器加一,當計數器到15時,證明所有子線程的消息都已經拿到了,此時循環停止。

以上是“python多線程中子線程和主線程如何相互通信”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

平凉市| 贵溪市| 兴安盟| 新昌县| 上虞市| 罗田县| 灵璧县| 桐城市| 额尔古纳市| 安西县| 大庆市| 城市| 筠连县| 水城县| 五台县| 秦安县| 武城县| 腾冲县| 广宗县| 长兴县| 凌云县| 长顺县| 甘谷县| 库车县| 新营市| 饶河县| 中阳县| 寿阳县| 高碑店市| 通州区| 多伦县| 新宾| 三台县| 长武县| 大渡口区| 山阳县| 古丈县| 永嘉县| 板桥市| 赤水市| 瑞金市|