更新:这个问题基于Queue.get()实际行为的错误心智模型,这是由一些略微模糊的文档引起的,但主要是由timedelta.total_seconds()的错误的手动实现引起的.当我试图证明原始答案不正确时,我发现了这个错误.现在timedelta.total_seconds()由

Python提供(自2.7起),我将继续使用它.

对困惑感到抱歉.

这不是“我的代码为什么不运行?”问题,但“这个设计决定背后的动机是什么?”

从2.3开始,Python的队列模块包含一个带有get方法的Queue类,它接受一个timeout参数.这是手册中的部分:

Queue.get([block[, timeout]])

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. […]

(强调我的)

请注意,即使尚未达到超时,它也可能引发Empty异常.事实上,我在Ubuntu(但不是Windows)上看到了这种行为.它只是提前退出,它对我的​​代码产生了轻微的影响 – 我可以编写代码.

大多数阻塞超时都会占用最小超时,这在非实时操作系统(包括Windows和Linux)上是有意义的.无法保证操作系统在任何给定的截止日期之前将上下文切换到您的进程或线程.

但是,这个最大超时.任何人都可以解释这个设计决定可能有意义吗?

python queue get 方法_为什么Python的queue.Queue.get()允许从超时中提前返回?相关推荐

  1. python列表函数方法_与Python列表相关的函数

    对于列表而言,除了设置和修改其中的元素,还有一些其他的方法也很有用,我们来具体看一下. Python 获取列表的长度 有时候,知道列表中有多少个元素的话,会很有帮助.例如,如果我们不断地向 fruit ...

  2. python编写脚本方法_【Python】教你一步步编写banner获取脚本

    Hello 各位小伙伴们大家好,周末过的愉快吗? 刚好最近学习了使用python编写banner获取脚本,今天就跟大家一起一步一步再学习一遍吧. Part.1 说明篇 什么是banner? banne ...

  3. python __reduce__魔法方法_关于python魔术方法payload:.__class__.__mro__[2].__subclasses__()[40](/etc/passwd...

    总览 "".__class__.__mro__[2].__subclasses__()[40]("/etc/passwd").read() 其实就是类似java ...

  4. 学python的正确方法_学习Python最正确的步骤(0基础必备)

    首先,学习Python编程技术,自学或者参加培训学习都适用,每个人都有自己的学习方式和方法. 一:明确自己的学习目标. 不管我们学习什么样的知识,都要对自己的学习目标有一个明确的认识.只有这样才能朝着 ...

  5. python内置类型方法_浅析Python数字类型和字符串类型的内置方法

    一.数字类型内置方法 1.1 整型的内置方法 作用 描述年龄.号码.id号 定义方式 x = 10 x = int('10') x = int(10.1) x = int('10.1') # 报错 内 ...

  6. python调试程序的方法_调试Python程序的四种方法

    程序编写完成或在编写过程中,需要对程序进行测试,根据测试发现的错误,进一步诊断,找出发生错误的原因和具体代码位置进行修改,这个过程称为程序调试.在一些情况下,可能需要查看或跟踪程序的运行状态,这种情况 ...

  7. python的del方法_关于python:__ del__方法是什么,如何调用它?

    我正在阅读代码. 在其中定义了__del__方法的类. 我发现此方法用于销毁类的实例. 但是,我找不到使用此方法的地方. 其主要原因是我不知道如何使用此方法,可能不是这样:obj1.del(). 因此 ...

  8. python编写脚本方法_使用Python编写提取日志中的中文的脚本的方法

    由于工作需要在一大堆日志里面提取相应的一些固定字符,如果单纯靠手工取提取,数据量大,劳心劳力,于是自然而然想到了用Python做一个对应的提取工具,代替手工提取的繁杂,涉及中文字符,正则表达式不好匹配 ...

  9. python加密安装方法_安装Python加密错误

    运行pip安装加密时,我得到以下结果 pip install cryptography Downloading/unpacking cryptography Running setup.py egg_ ...

最新文章

  1. 学习java三个技巧要知道!
  2. PHP图片文字水印效果
  3. 前端学习(496):noscript元素
  4. Python学习笔记之文件
  5. 开源 免费 java CMS - FreeCMS1.3-信息管理
  6. ASP.NET MVC 学习第三天
  7. html 点击按钮刷新验证码,HTML点击刷新验证码
  8. 加号和减号在一起怎么读_数学符号里的“加减”是“±”,那么“减加”怎么打?求高手!!!!!!!!! word中加号和减号放在一起怎么打出来?...
  9. Rockchip | Rockchip Camera技术
  10. android闹钟报告分析,闹钟分析---分析设计报告全解.doc
  11. wxpython 优秀的界面_WxPython实现无边框界面
  12. 从零开始了解推荐系统全貌
  13. 【干货分享】使用Inno Setup设计扁平化风格的安装包
  14. C/C++ return 如何实现的?return 的内部机制
  15. matlab编码流程图,高手来帮我看看该怎么画这些代码的流程图
  16. linux环境变量自定义环境变量
  17. 企业IT管理员IE11升级指南【7】—— Win7和Win8.1上的IE11功能对比
  18. uniapp 中 Cannot read property ‘length‘ of undefined 报错处理
  19. discuz目录结构 ano
  20. Mac 笔记本电脑扩展坞无法识别超过 2TB 容量外置存储的解决

热门文章

  1. 写给一个外汇女交易员的信(连载四)
  2. Kali 2.0 安装与基础配置
  3. JAVA并发编程--2.synchronied实现原理
  4. 抖音、快手、淘宝等都在用的算法——推荐算法
  5. yum更换源和下载rpm包、Linux软件源码包方式安装
  6. 计算机接口cad图,管道接口CAD平面图怎么画
  7. AutoCAD如何添加网络打印机 添加公司打印机
  8. c# html转ubb,C#实现HTML和UBB互相转换的方法
  9. 几何画板绘制正方形网格的技巧
  10. 计算机租赁服务费,租赁电脑行业潜规则大曝光