国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > Python > 正文

python 多線程中子線程和主線程相互通信方法

2020-01-04 14:06:23
字體:
來源:轉載
供稿:網友

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

下面上代碼:

#!/usr/bin/python# coding:utf8'''多線程和queue配合使用,實現子線程和主線程相互通信的例子'''import threading __author__ = "Kenny.Li" import Queueimport timeimport 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 = 0threads = []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 多線程中子線程和主線程相互通信方法就是小編分享給大家的全部內容了,希望能給大家一個參考,也希望大家多多支持VEVB武林網。


注:相關教程知識閱讀請移步到python教程頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 土默特左旗| 宜兰市| 宁河县| 林州市| 乐业县| 老河口市| 斗六市| 怀柔区| 垦利县| 罗田县| 随州市| 介休市| 同德县| 左权县| 广德县| 额尔古纳市| 达孜县| 大宁县| 通江县| 鲁甸县| 老河口市| 佛学| 日照市| 黑龙江省| 山阴县| 临猗县| 治多县| 博白县| 合川市| 武宣县| 宣化县| 大理市| 乌兰察布市| 阜阳市| 信宜市| 乐昌市| 杭锦后旗| 湘潭市| 凤山县| 将乐县| 新巴尔虎右旗|