python3 线程间通讯(借助queue)
# -*- 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)相关推荐
- 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)
原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...
- 线程间通讯机制(提高篇)——深入浅出实现原理
前言: 这一篇博文主要是和大家讲解一下线程间通讯机制的内部实现原理,即Handler.Message.MessageQueue.Looper.HandlerThread.AsyncTask类的实现以及 ...
- 线程间通讯机制(基础篇)——Handler、Runnable、HandlerThread、AsyncTask的使用
前言: android线程通讯机制是android应用开发的基础课程,对于很多初学android的朋友可能还没有完全理解,所以,今天我就做一下知识小结吧. 一.线程安全 可能有java基本的朋友都知道 ...
- 多线程编程之三——线程间通讯
七.线程间通讯 一般而言,应用程序中的一个次要线程总是为主线程执行特定的任务,这样,主线程和次要线程间必定有一个信息传递的渠道,也就是主线程和次要线程间要进行通信.这种线程间的通信不但是难以避免的,而 ...
- RT-Thread学习笔记六——线程间通讯(信号量的使用)
目录 1.概念 1.1 二值型信号量 1.2 计数型信号量 2.信号量的创建(API) 2.1动态信号量创建 2.2动态信号量的删除 2.3静态信号量的创建 2.4静态信号量的删除 3.信号量的获 ...
- java线程间通讯的几种方式
并发编程中,我们可能会遇到这样一个场景 A.B两个线程并行,但是我希望保证B线程在A线程执行完了后再执行 这个时候就需要线程间进行通讯 A执行完了后对B说一声,喂,我执行完了 来康康用Java怎么实现 ...
- linux优先级队列,Python3 线程优先级队列( Queue)
导读 Python 的 Queue 模块中提供了同步的.线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列 PriorityQueue. ...
- java判断线程是否wait_Java并发编程之线程间通讯(上)wait/notify机制
线程间通信 如果一个线程从头到尾执行完也不和别的线程打交道的话,那就不会有各种安全性问题了.但是协作越来越成为社会发展的大势,一个大任务拆成若干个小任务之后,各个小任务之间可能也需要相互协作最终才能执 ...
- NNG/NanoMsg进程线程间通讯库
NNG/nanomsg 是最近项目上使用到的一个通信库,用来实现进程间过程调用和线程间通信,很是方便. NNG 是 nanomsg 的继任版本,而 nanomsg 则是流行的 ZMQ 的 C 重写版. ...
最新文章
- 赠书 | 从阿里到Facebook,一线大厂这样做深度学习推荐系统
- 为什么分布式一定要有延时任务?
- wince模拟器访问网络_Windows 10X开发模拟器上手
- delphi打包python_使用Delphi 编写Python Extension
- Attempt to do update or delete on table db1.table1 that is not transactional解决
- Oracle 获取本周、本月、本季、本年的第一天和最后一天
- 2013年下半年信息系统项目管理师考试试卷(回忆版)
- python的序列包括字符串列表和什么_Python基础:03序列:字符串、列表和元组
- 【树】104. 二叉树的最大深度
- RT-Thread 简介及架构
- python常用模块教程_盘点Python常用的模块和包
- 7002.ubuntu18.04将软件图标固定到工具栏
- 洛谷——P2524 Uim的情人节礼物·其之弐
- websocket 发送多条消息如何判断全部接收_Websocket的分布式集群开发及部署
- 绚丽的javascript拾色器(不兼容IE8及以下)
- 旧物手工机器人制作图片_自制送给小朋友的生日礼物,DIY帅气的不织布机器人...
- episode0519英语课
- Linux运维:推荐八款Linux远程连接工具
- .c文件和.h文件之间的联系
- 笔记2:VC++ socket通信实例
热门文章
- c语言二分法查找次数,二分法查找
- 一文简单弄懂tensorflow_【TensorFlow】一文弄懂CNN中的padding参数
- python基础教程 pdf github_python基础教程之Jupyter导出PDF从入门到绝望(已解|python基础教程|python入门|python教程...
- vb.net 正则 替换 第n个_Python中正则表达式模块详解
- asp.net gridview 模板列 弹出窗口编辑_连云港各种新型铝模板设计软件,哪家强_威尔达建材...
- 通俗易懂的讲解区块链
- 【一篇文章搞懂】Java社招最全面试题
- 【408预推免复习】操作系统之IO层次结构和IO控制方式
- 【深度学习】论文EMO单眼识别分析
- 【响应式Web前端设计】:link、:hover、:active和:visited的区别