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,于是拿来研究一下,感觉还是很不错的,入手简单使用也 ...
随机推荐
- appium自动化测试(三)
一. 层级定位和list 先通过find_element_by_XXX找到父级元素webelement,再通过webelement.find_element_by_XXX寻找子元素 二. 滑动屏幕 滑 ...
- poj2723 2-sat
当两个门锁相同时,这个钥匙必须用,不同时分开用 可以直接遍历门,当然二分更快 #include<map> #include<set> #include<cmath> ...
- Build_Release.bat
Build_Release.bat @echo off pushd "%~dp0" set tag=Release set PATH="C:\Program Files ...
- WAF 强化学习
参考:https://github.com/duoergun0729/3book/tree/master/code/gym-waf 代码: wafEnv.py #-*- coding:utf-8 –* ...
- 转:大数据架构:flume-ng+Kafka+Storm+HDFS 实时系统组合
虽然比较久,但是这套架构已经很成熟了,记录一下 一般数据流向,从“数据采集--数据接入--流失计算--数据输出/存储”<ignore_js_op> 1).数据采集 负责从各节点上实时采集数 ...
- 【scala】占位符
Scala语言为了让函数字面量更加精简,还可以使用下划线作为占位符,用来表示一个或多个参数. 我们用来表示的参数必须满足只在函数字面量中出现一次. 我们用例子来看占位符的用法 scala> va ...
- 实验二. 使用LoadRunner进行压力测试
实验二. 使用LoadRunner进行压力测试 一. LoadRunner 概要介绍 1.1简介 LoadRunner 是一种预测系统行为和性能的工业标准级负载测试工具.通过以模拟上千万用户实 ...
- C3P0使用详解
定义: C3P0是一个开源的JDBC连接池,目前使用它的开源项目有Hibernate,Spring等. 数据库连接池的基本思想就是为数据库连接建立一个"缓冲池".预先在缓冲池中放入 ...
- linux命令三
作业一:1) 将用户信息数据库文件和组信息数据库文件纵向合并为一个文件/1.txt(覆盖) [root@bogon test]# cat /etc/passwd /etc/group > /1. ...
- YYMMDD转YYYY-MM-DD
date.replace(/(\d{4})(\d{2})(\d{2})/g,'$1-$2-$3');