Python多线程-队列
队列就是存东西取东西,多用于多线程中
按照顺序
对传入的数据按规定的顺序输出
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import queue #Py3中为queue,Py2中为Queue q = queue.Queue() #按照先进先出的顺序,默认参数为maxsize=0,即允许最大传入的个数
# q = queue.LifoQueue() #后进先出 q.put('a') #存数据
q.put('b')
q.put('c')
q.put('d')
q.put('d') #传入的数据也可以一样的 print(q.qsize()) #打印队列的长度 print(q.get()) #按顺序打印出数据
print(q.get())
print(q.get())
print(q.get())
print(q.get())
运行结果
传入5个数据,打印出5个数据
但是如果传入5个数据,打印6个数据的话,程序就会一直等着,直到新的数据传入为止
打印数据的get中有两个参数,一个是block,一个是timeout
block默认值为True,即为堵塞
timeout默认值为None,即为一直等候
修改参数
print(q.get(block=False)) #设为不堵塞
print(q.get(timeout=1)) #设堵塞时间为1s
再看看会是什么样
直接报错,不会在那卡着
还有一种方法
print(q.get_nowait()) #设为不等待
运行结果也是一样的
不按照顺序
默认对传入的数据按指定顺序输出按照首字母顺序进行排序
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import queue q = queue.PriorityQueue() #按照规定的顺序 q.put('php')
q.put('python')
q.put('java')
q.put('mysql')
q.put('c++')
q.put('golang') print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
运行结果
要是不想按首字母顺序排序的话,可以这么写
# -*- coding:utf-8 -*-
__author__ = "MuT6 Sch01aR" import queue q = queue.PriorityQueue() #按照规定的顺序 q.put((1,'php')) #传入的参数为元组
q.put((-2,'python'))
q.put((5,'java'))
q.put((0,'mysql'))
q.put((7,'c++'))
q.put((3,'golang')) print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
print(q.get())
运行结果
Python多线程-队列的更多相关文章
- Python 多线程 队列 示例
Python3,开一个线程,间隔1秒把一个递增的数字写入队列,再开一个线程,从队列中取出数字并打印到终端 #! /usr/bin/env python3 import time import thre ...
- python 多线程队列
##Using Queue with multiprocessing – Chapter : Process Based Parallelism import multiprocessing impo ...
- Python 用队列实现多线程并发
# Python queue队列,实现并发,在网站多线程推荐最后也一个例子,比这货简单,但是不够规范 # encoding: utf-8 __author__ = 'yeayee.com' # 由本站 ...
- Python多线程与队列
Python多线程与Queue队列多线程在感官上类似于同时执行多个程序,虽然由于GIL的存在,在Python中无法实现线程的真正并行,但是对于某些场景,多线程仍不失为一个有效的处理方法: 1,不紧急的 ...
- Python 多线程同步队列模型
Python 多线程同步队列模型 我面临的问题是有个非常慢的处理逻辑(比如分词.句法),有大量的语料,想用多线程来处理. 这一个过程可以抽象成一个叫“同步队列”的模型. 具体来讲,有一个生产者(Dis ...
- python多线程编程
Python多线程编程中常用方法: 1.join()方法:如果一个线程或者在函数执行的过程中调用另一个线程,并且希望待其完成操作后才能执行,那么在调用线程的时就可以使用被调线程的join方法join( ...
- Python 多线程教程:并发与并行
转载于: https://my.oschina.net/leejun2005/blog/398826 在批评Python的讨论中,常常说起Python多线程是多么的难用.还有人对 global int ...
- 【python,threading】python多线程
使用多线程的方式 1. 函数式:使用threading模块threading.Thread(e.g target name parameters) import time,threading def ...
- python消息队列snakemq使用总结
Python 消息队列snakemq总结 最近学习消息总线zeromq,在网上搜了python实现的消息总线模块,意外发现有个消息队列snakemq,于是拿来研究一下,感觉还是很不错的,入手简单使用也 ...
随机推荐
- Selenium with Python 002 - 快速入门
一.简单实例演示 1.创建 python_org_search.py: #!/usr/bin/env python from selenium import webdriver from seleni ...
- 10074 启用开发者模式 for vs2015rc
1. 关于VS2015RC 有两个版本,它们都包含了Windows 10 SDK. 社区版:免费,可以开发Windows UAP应用.iOS和Android应用.在 帮助->注册产品 菜单可以登 ...
- android多国语言使用
多国语言:在res目录下建立不同名称的values文件来调用不同的语言包 Values文件汇总如下: 中文(中国):values-zh-rCN 中文(台湾):values-zh-rTW 中文(香港): ...
- 20165210 Java第四次实验报告
20165210 实验四 Android程序设计 实验步骤 第24章:初识Android 任务一:完成Hello World, 要求修改res目录中的内容,Hello World后要显示自己的学号 学 ...
- 简要谈谈javascript bind 方法
最近去参加了场面试,跟面试官聊了很多JS基础上的东西,其中有个问题是谈谈对apply.call.bind的理解和区别.顿时一愣,apply.call我知道,经常用的东西,bind是什么鬼!!!好像见过 ...
- DRF 的 版本,解析器,与序列化
DRF 的 版本,解析器,与序列化 补充 配置文件中的 类的调用: (字符串) v1 = ["view.xx.apth.Role","view.xx.apth.Role& ...
- java事务(二)——本地事务
本地事务 事务类型 事务可以分为本地事务和分布式事务两种类型.这两种事务类型是根据访问并更新的数据资源的多少来进行区分的.本地事务是在单个数据源上进行数据的访问和更新,而分布式事务是跨越多个数据源来进 ...
- Web目录结构
/: Web应用的跟目录,该目录下所有文件在客户端都可以访问(JSP,HTML) /WEB-INF: 存放应用使用的各种资源.该目录及其子目录对客户端都是不可以访问的, 其中包括web.xml(部署表 ...
- Java Thread类的yield()和join()的区别和用法
yield: 解释它之前,先简述下,多线程的执行流程:多个线程并发请求执行时,由cpu决定优先执行哪一个,即使通过thread.setPriority(),设置了 线程的优先级,也不一定就是每次都先执 ...
- Android onTouchEvent和setOnTouchListener中onTouch的区别
OnTouchEvent()方法 是获取的对屏幕的各种操作,比如向左向右滑动,点击返回按钮等等. 属于一个宏观的屏幕触摸监控. OnTouchListener()方法 是获取某一个控件某一个View的 ...