# -*- coding: utf-8 -*-
# by dl
from threading import Thread
import requests
# 线程不安全的queue
# from collections import deque
# 线程安全的queue
from queue import Queue# 多线程访问这个不安全
q = Queue()# 消费者模型
class ConvertThread(Thread):def __init__(self, queue):# 调用父类构造器Thread.__init__(self)self.queue = queuedef run(self):# 循环队列(处理消费者数据)while True:# 获取队列信息 返回的是元祖 然后用元组开包(拆开元组 分别获取参数)sid, data = self.queue.get()# 如果接受到-1则不再处理if sid == -1: break;#if data:print('处理中')# 生产者模型
class DownLoadthread(Thread):def __init__(self, sid, queue):# 调用父类构造器Thread.__init__(self)self.sid = sidself.url = 'url'self.queue = queuedef download(self, url):r = requests.get(url)if r.ok:return r.textdef run(self):# 1 获取datadata = self.download(self.url)# 2  data 放入队列self.queue.put((self.sid, data))print(self.sid, data)# 创建下载线程池
dThreads = [DownLoadthread(i, q) for i in range(1, 11)]
cthread = ConvertThread(q)
# 开启所有下载线程
for t in dThreads:t.start()
# 开启处理线程
cthread.start()
# 循环阻塞下载进程
for t in dThreads:t.join()
# 所有下载完成后加上-1让转换进程退出
# put一个元组 用来终结处理线程
q.put((-1, None))

python3 线程间通讯(借助queue)相关推荐

  1. 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)

    原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...

  2. 线程间通讯机制(提高篇)——深入浅出实现原理

    前言: 这一篇博文主要是和大家讲解一下线程间通讯机制的内部实现原理,即Handler.Message.MessageQueue.Looper.HandlerThread.AsyncTask类的实现以及 ...

  3. 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用

    前言: android线程通讯机制是android应用开发的基础课程,对于很多初学android的朋友可能还没有完全理解,所以,今天我就做一下知识小结吧. 一.线程安全 可能有java基本的朋友都知道 ...

  4. 多线程编程之三——线程间通讯

    七.线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而 ...

  5. RT-Thread学习笔记六——线程间通讯(信号量的使用)

    目录 1.概念 1.1  二值型信号量 1.2  计数型信号量 2.信号量的创建(API) 2.1动态信号量创建 2.2动态信号量的删除 2.3静态信号量的创建 2.4静态信号量的删除 3.信号量的获 ...

  6. java线程间通讯的几种方式

    并发编程中,我们可能会遇到这样一个场景 A.B两个线程并行,但是我希望保证B线程在A线程执行完了后再执行 这个时候就需要线程间进行通讯 A执行完了后对B说一声,喂,我执行完了 来康康用Java怎么实现 ...

  7. linux优先级队列,Python3 线程优先级队列( Queue)

    导读 Python 的 Queue 模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue. ...

  8. java判断线程是否wait_Java并发编程之线程间通讯(上)wait/notify机制

    线程间通信 如果一个线程从头到尾执行完也不和别的线程打交道的话,那就不会有各种安全性问题了.但是协作越来越成为社会发展的大势,一个大任务拆成若干个小任务之后,各个小任务之间可能也需要相互协作最终才能执 ...

  9. NNG/NanoMsg进程线程间通讯库

    NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便. NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版. ...

最新文章

  1. 赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
  2. 为什么分布式一定要有延时任务?
  3. wince模拟器访问网络_Windows 10X开发模拟器上手
  4. delphi打包python_使用Delphi 编写Python Extension
  5. Attempt to do update or delete on table db1.table1 that is not transactional解决
  6. Oracle 获取本周、本月、本季、本年的第一天和最后一天
  7. 2013年下半年信息系统项目管理师考试试卷(回忆版)
  8. python的序列包括字符串列表和什么_Python基础:03序列:字符串、列表和元组
  9. 【树】104. 二叉树的最大深度
  10. RT-Thread 简介及架构
  11. python常用模块教程_盘点Python常用的模块和包
  12. 7002.ubuntu18.04将软件图标固定到工具栏
  13. 洛谷——P2524 Uim的情人节礼物·其之弐
  14. websocket 发送多条消息如何判断全部接收_Websocket的分布式集群开发及部署
  15. 绚丽的javascript拾色器(不兼容IE8及以下)
  16. 旧物手工机器人制作图片_自制送给小朋友的生日礼物,DIY帅气的不织布机器人...
  17. episode0519英语课
  18. Linux运维:推荐八款Linux远程连接工具
  19. .c文件和.h文件之间的联系
  20. 笔记2:VC++ socket通信实例

热门文章

  1. c语言二分法查找次数,二分法查找
  2. 一文简单弄懂tensorflow_【TensorFlow】一文弄懂CNN中的padding参数
  3. python基础教程 pdf github_python基础教程之Jupyter导出PDF从入门到绝望(已解|python基础教程|python入门|python教程...
  4. vb.net 正则 替换 第n个_Python中正则表达式模块详解
  5. asp.net gridview 模板列 弹出窗口编辑_连云港各种新型铝模板设计软件,哪家强_威尔达建材...
  6. 通俗易懂的讲解区块链
  7. 【一篇文章搞懂】Java社招最全面试题
  8. 【408预推免复习】操作系统之IO层次结构和IO控制方式
  9. 【深度学习】论文EMO单眼识别分析
  10. 【响应式Web前端设计】:link、:hover、:active和:visited的区别