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

 更新时间:2018年11月09日 11:02:03   作者:yifei325325  
今天小编就为大家分享一篇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 多线程中子线程和主线程相互通信方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • Python使用asyncio包实现异步编程方式

    Python使用asyncio包实现异步编程方式

    这篇文章主要介绍了Python使用asyncio包实现异步编程方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-06-06
  • python制作最美应用的爬虫

    python制作最美应用的爬虫

    这篇文章主要介绍了python制作最美应用的爬虫的相关资料,需要的朋友可以参考下
    2015-10-10
  • Python基本文件操作实用指南

    Python基本文件操作实用指南

    文件操作是我们开发中必不可少的一项需求,下面这篇文章主要给大家介绍了关于Python基本文件操作的相关资料,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-06-06
  • pytorch在fintune时将sequential中的层输出方法,以vgg为例

    pytorch在fintune时将sequential中的层输出方法,以vgg为例

    今天小编就为大家分享一篇pytorch在fintune时将sequential中的层输出方法,以vgg为例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-08-08
  • Jupyter Notebook的使用详解

    Jupyter Notebook的使用详解

    JupyterNotebook是一个强大的工具,可以用于数据科学和机器学习等领域的各种任务,该文章介绍了JupyterNotebook的基本使用方法,包括新建和保存Notebook,插入图像,运行代码,以及许多快捷键的使用
    2025-01-01
  • Python Melt函数将宽格式的数据表转换为长格式

    Python Melt函数将宽格式的数据表转换为长格式

    在数据处理和清洗中,melt函数是Pandas库中一个强大而灵活的工具,它的主要功能是将宽格式的数据表转换为长格式,从而更方便进行分析和可视化,本文将深入探讨melt函数的用法、参数解析以及实际应用场景
    2023-12-12
  • 详细分析Python collections工具库

    详细分析Python collections工具库

    这篇文章主要介绍了详解Python collections工具库的相关资料,文中讲解非常细致,代码帮助大家更好的理解和学习,感兴趣的朋友可以了解下
    2020-07-07
  • PyQt5 实现给窗口设置背景图片的方法

    PyQt5 实现给窗口设置背景图片的方法

    今天小编就为大家分享一篇PyQt5 实现给窗口设置背景图片的方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-06-06
  • Pandas groupby apply agg 的区别 运行自定义函数说明

    Pandas groupby apply agg 的区别 运行自定义函数说明

    这篇文章主要介绍了Pandas groupby apply agg 的区别 运行自定义函数说明,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2021-03-03
  • Python常见文件操作的示例详解

    Python常见文件操作的示例详解

    文件操作是我们开发中必不可少的一项需求。本文主要给大家介绍了关于Python常见的一些文件操作,文中通过实例代码介绍的非常详细,需要的朋友可以参考下
    2022-07-07

最新评论