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

首頁 > 編程 > Python > 正文

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

2020-02-15 23:35:58
字體:
來源:轉載
供稿:網(wǎng)友

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

下面上代碼:

#!/usr/bin/python# coding:utf8'''多線程和queue配合使用,實現(xiàn)子線程和主線程相互通信的例子'''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行,循環(huán)開啟所有子線程

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

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

以上這篇python 多線程中子線程和主線程相互通信方法就是小編分享給大家的全部內(nèi)容了,希望能給大家一個參考,也希望大家多多支持武林站長站。

發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 宁海县| 呈贡县| 错那县| 鹿泉市| 石泉县| 乐亭县| 堆龙德庆县| 巴彦淖尔市| 广平县| 扶风县| 中西区| 黔东| 青州市| 霸州市| 饶河县| 靖安县| 奉新县| 五原县| 连南| 高雄县| 双柏县| 防城港市| 揭东县| 宁化县| 大埔区| 泊头市| 祁连县| 中牟县| 南城县| 宁波市| 资源县| 伊宁市| 枣强县| 昭苏县| 赤壁市| 浦东新区| 大城县| 崇阳县| 田阳县| 邢台市| 如皋市|