国产探花免费观看_亚洲丰满少妇自慰呻吟_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ā)表
主站蜘蛛池模板: 海门市| 天峨县| 天气| 怀化市| 八宿县| 友谊县| 满洲里市| 英山县| 昆山市| 永善县| 云霄县| 普安县| 扎囊县| 乐山市| 原平市| 开远市| 垦利县| 财经| 宝兴县| 轮台县| 平江县| 正镶白旗| 滦平县| 宜黄县| 凤凰县| 聂荣县| 饶河县| 公主岭市| 米脂县| 阿拉善盟| 昔阳县| 无极县| 宁晋县| 中宁县| 连平县| 马关县| 罗江县| 罗甸县| 三都| 民和| 日土县|