python主线程和子线程_python 多线程中子线程和主线程相互通信

import threading

import queue

import time

import random'''需求:主线程开启了多个线程去干活,每个线程需要完成的时间

不同,但是在干完活以后都要通知给主线程

多线程和queue配合使用,实现子线程和主线程相互通信的例子'''q =queue.Queue()

threads=[]classMyThread(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)

# 通过q.put()方法,将每个子线程要返回给主线程的消息,存到队列中

self.q.put("我是第%d个线程,我睡眠了%d秒,当前时间是%s" %(self.t, self.j,time.ctime()))'''# 生成15个子线程,加入到线程组里,

# 每个线程随机睡眠1-8秒(模拟每个线程干活时间的长短不同)'''

for i in range(15):

j=random.randint(1,8)

threads.append(MyThread(q,i,j))

# 循环开启所有子线程for mt inthreads:

mt.start()

print('进程开启时间:%s'%(time.ctime()))'''通过一个while循环,当q队列中不为空时,通过q.get()方法,

循环读取队列q中的消息,每次计数器加一,当计数器到15时,

证明所有子线程的消息都已经拿到了,此时循环停止'''count = 0

whileTrue:ifnot q.empty():

print(q.get())

count+=1

if count==15:break

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值