python多线程为什么要用队列_Python程序中的线程操作-线程队列

一、线程队列

queue队列:使用import queue,用法与进程Queue一样

queue is especially useful in threaded programming when information must be exchanged safely between multiple threads.

二、先进先出

class queue.Queue(maxsize=0)

import queue

q=queue.Queue()

q.put('first')

q.put('second')

q.put('third')

print(q.get())

print(q.get())

print(q.get())

'''

结果(先进先出):

first

second

third

'''

三、后进先出

class queue.LifoQueue(maxsize=0)

import queue

q=queue.LifoQueue()

q.put('first')

q.put('second')

q.put('third')

print(q.get())

print(q.get())

print(q.get())

'''

结果(后进先出):

third

second

first

'''

四、存储数据时可设置优先级的队列

class queue.PriorityQueue(maxsize=0)

4.1 优先级队列

import queue

q=queue.PriorityQueue()

#put进入一个元组,元组的第一个元素是优先级(通常是数字,也可以是非数字之间的比较),数字越小优先级越高

q.put((20,'a'))

q.put((10,'b'))

q.put((30,'c'))

print(q.get())

print(q.get())

print(q.get())

'''

结果(数字越小优先级越高,优先级高的优先出队):

(10, 'b')

(20, 'a')

(30, 'c')

'''

4.2 更多方法说明

Constructor for a priority queue. maxsize is an integer that sets the upperbound limit on the number of items that can be placed in the queue. Insertion will block once this size has been reached, until queue items are consumed. If maxsize is less than or equal to zero, the queue size is infinite.

The lowest valued entries are retrieved first (the lowest valued entry is the one returned by sorted(list(entries))[0]). A typical pattern for entries is a tuple in the form: (priority_number, data).

exception queue.Empty: Exception raised when non-blocking get() (or get_nowait()) is called on a Queue object which is empty.

exception queue.Full: Exception raised when non-blocking put() (or put_nowait()) is called on a Queue object which is full.

Queue.qsize()

Queue.empty(): return True if empty

Queue.full(): return True if full

Queue.put(item, block=True, timeout=None): Put item into the queue. If optional args block is true and timeout is None (the default), block if necessary until a free slot is available. If timeout is a positive number, it blocks at most timeout seconds and raises the Full exception if no free slot was available within that time. Otherwise (block is false), put an item on the queue if a free slot is immediately available, else raise the Full exception (timeout is ignored in that case).

Queue.put_nowait(item): Equivalent to put(item, False).

Queue.get(block=True, timeout=None): Remove and return an item from the queue. If optional args block is true and timeout is None (the default), block if necessary until an item is available. If timeout is a positive number, it blocks at most timeout seconds and raises the Empty exception if no item was available within that time. Otherwise (block is false), return an item if one is immediately available, else raise the Empty exception (timeout is ignored in that case).

Queue.get_nowait(): Equivalent to get(False).

Two methods are offered to support tracking whether enqueued tasks have been fully processed by daemon consumer threads.

Queue.task_done(): Indicate that a formerly enqueued task is complete. Used by queue consumer threads. For each get() used to fetch a task, a subsequent call to task_done() tells the queue that the processing on the task is complete.

If a join() is currently blocking, it will resume when all items have been processed (meaning that a task_done() call was received for every item that had been put() into the queue).

Raises a ValueError if called more times than there were items placed in the queue.

Queue.join(): block直到queue被消费完毕。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/245006.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

php的修改数据库语句怎么写,php的数据库修改语句是什么

php的数据库修改语句是UPDATE,用于更新数据库表中已存在的记录,语法为【UPDATE table_name SET column1value, column2value2,...WHERE some_columnsome 】。本教程操作环境:windows7系统、PHP5.6版,DELL G3电脑。UPDATE 语句用于…

ubuntu20.04中安装划词翻译_教你轻松玩转免安装的网页翻译插件“有道网页翻译2.0”...

大家在日常网页浏览中肯定多多少少都会碰到英文网站,这时候往往需要花费非常多的时候去自行理解,效率低下,又或者借助浏览器自带的翻译功能进行翻译,但又可能遇到翻译不准的情况。现在这个问题可以解决啦!“有道网页翻…

c语言python零基础教学_编程零基础应当如何开始学习 Python?附教程

零基础学编程,用python入门是个不错的选择,虽然国内基本上还是以c语言作为入门开发语言,但在国外,已经有很多的学校使用python作为入门编程语言。此外,python在机器学习,人工智能领域也非常流行&#xff0c…

python 主要内容,介绍一些有关python的重要内容

Python的参数传递方式是:位置,默认值,变量参数,关键词参数。传值究竟是函数的值传递还是引用传递,要分情况:不变参数用值传递:像整型和string这样的不变对象是通过拷贝来传递的,因为…

系统业务逻辑书籍_「樊登读书会强推:免费送10本绝密书」彻底改变你的逻辑思维能力...

哈喽~你好我是JS-冰冰今天在星巴克喝咖啡整理了一些巨大价值的绝密资料,从过往在樊登读书会整理的10本彻底改变《逻辑思维能力》的绝密电子书。非常实用,对我的改变和提升非常有帮助,所以想把这份改变命运的绝密大礼包也送给需要的小伙伴~(怎…

饿了么风神登录_海底捞首度登陆第三方外卖!联手饿了么全国配送“小火锅”...

近日,“海底捞”正式联手饿了么推出第三方外卖配送服务。据悉,这是海底捞首次与本地生活服务平台合作推出第三方外卖业务。包括上海、济南、福州、郑州等多个城市的用户登录饿了么平台,下单购买海底捞“小火锅”外送等产品后,便可…

script标签里src为php,如何获取指定为script标记的'src'的文件的内容?

tl; dr脚本标记不受CORS和同源策略的约束,因此javascript / DOM无法提供对通过长版本: 大多数其他答案(以及公认的答案)正确表明,“ 正确 ”的方式来获取通过会破坏CORS策略,例如,现代浏览器阻止了XHR资源提供访问控制…

数据相关的在职研究生_南方医科大学2020年招收在职博士研究生导师名单及复试考生名单!...

南方医科大学2020年在职博士研究生入围复试考生名单各位考生:根据我校招收2020年在职博士研究生相关工作规定,现就进入复试考生名单予以公示,请入围复试考生密切关注我校相关复试公告,做好复试准备。南方医科大学招收2020年在职博…

富文本++php+源码,自己实现富文本编辑器

【实例简介】网页中经常需要输入多种资料,自带的TextBox不够用【实例截图】【核心代码】//************************************************************************************//将texttemp内容移入iframeiframeDocument.body.innerHTML parent.document.getE…

gridlayoutmanager 设置间距_不设置主灯的客厅应当如何保证较好的灯光分布?

如果没有从事照明设计的专业人士或者是比较有经验的室内设计师协助业主做决策,个人不太建议普通业主自行设置“无主灯客厅”的灯光分布。在日常设计工作中,如果委托人确已考虑放弃主灯,通常我也会建议业主保留已有的客厅主灯的灯控线路及开关…

Oracle filter 函数,Oracle数据库之SQL单行函数---字符函数续

前一篇博客练习了一些字符函数,之后自己又去下查阅了相关的资料,上一篇博客中还有很多的字符函数没有练习到,这次主要是对上次的一些未用到的字符函数进行一些补充练习。ascii()返回与指定的字符对应的十进制数,若为字符串则返回字符串首字母…

python 数据导入mysql_用python批量向数据库(MySQL)中导入数据

用python批量向数据库(MySQL)中导入数据现有数十万条数据,如下的经过打乱处理过的数据进行导入数据库内部的表格的数据格式如下与下面的表格结构相同Current database: python_test_1--------------------------------------------------------| Field | Type | Null | Key | D…

怎么画单极交流放大电路波形图_珠海放大IC怎么样

容抗XC1/2πf c (f表示交流信号的频率,C表示电容容量)电话机中常用电容的种类有电解电容、瓷片电容、贴片电容、独石电容、钽电容和涤纶电容等。集成电路更着重电路的设计和布局布线,芯片更强调电路的集成、生产和封装。而广义的集成电路,当涉…

python3 规则引擎_几个常见规则引擎的简单介绍和演示

Ilog JRules 是最有名的商用BRMS;Drools 是最活跃的开源规则引擎;Jess 是Clips的java实现,就如JRuby之于Ruby,是AI系的代表;Visual Rules(旗正规则引擎)国内商业规则引擎品牌。今天对比了一下这四个颇有代表性的规则引…

图片识别不了小程序怎么办_图片转文字【微信小程序】

文字识别小程序在文章的底部直接拉到文章底部就可使用↓↓↓↓↓↓工作中,很多时间需要把纸质文稿上的大段文字变成可编辑文字,有时我们会一个一个文字录入,有时我们可以采用扫描仪,我们也用过扫描全能王APP。这里给大家介绍一种方…

pg与oracle区别,PostgresQL 学习记录之与oracle区别(一)

与oracle的区别1、数据类型区别OraclePostgresQL注释VARCHAR2VARCHAR(charactervarying)Long、CLOBTEXTDATEDATE/TIME/TIMESTAMPDATE仅包含日期、TIME仅包含时间、TIMESTAMP均包含,通常使用DATENUMBERSMALLINT/INTEGER/BIGINT/NUMERIC/REAL/DOUBLEPRECISION通常可用NUMERICBLOB…

python 数据分析排名_2018年上半年热门编程语言排行榜

2018上半年热门编程语言有哪些?新手怎么选择合适的编程语言,以及我们这些老鸟们,怎么规划自身的职业发展,拓展编程技能,接下来为大家提供参考建议!1PythonPython的历史可以追溯到1989年,因其高度…

oracle 双引号替换,oracle - Oracle SQL-Loader在值中有效地处理内部双引号 - SO中文参考 - www.soinside.com...

如果您在封闭的字段中没有管道,则可以从控制文件中执行此操作。如果你可以在一个字段中同时拥有管道和双引号,那么我认为你别无选择,只能对这些文件进行预处理。你的解决方案[1],取代双引号with an SQL operator,发生得…

切片器可以设置日期格式?_Power BI 中的切片器

何时使用切片器在要完成以下操作时,切片器非常有用:在报表画布上显示常用或重要的筛选器,用以简化访问。更轻松地查看当前筛选的状态,而无需打开下拉列表。按数据表中不需要的和隐藏的列进行筛选。通过将切片器放置在重要的视觉对…

linux打印jvm内存堆栈_5款强大的JVM 性能调优监控工具

原文链接:www.iteye.com/blog/josh-persistence-2161848现实企业级Java应用开发、维护中,有时候我们会碰到下面这些问题:OutOfMemoryError,内存不足内存泄露线程死锁锁争用(Lock Contention)Java进程消耗CPU过高......这些问题在日…