当前位置: 首页 > 面试题库 >

Python:对于长时间运行的进程,通过还是休眠?

公孙威
2023-03-14
问题内容

我正在编写一个队列处理应用程序,该应用程序使用线程等待并响应要发送到该应用程序的队列消息。对于应用程序的主要部分,只需要保持活动状态即可。对于类似下面的代码示例:

而True:
  通过

要么

而True:
  time.sleep(1)

哪一个对系统的影响最小?除了保持python应用运行之外,什么都不做的首选方式是什么?


问题答案:

我可以想象 time.sleep() 会减少系统开销。使用 pass
将导致循环立即重新评估并固定CPU,而使用time.sleep将允许执行被暂时挂起。

编辑 :只是为了证明这一点,如果您启动python解释器并运行此命令:

>>> while True:
...     pass
...

您可以看到Python立即开始吞噬90-100%的CPU,而与:

>>> import time 
>>> while True:
...     time.sleep(1)
...

甚至几乎没有在活动监视器上注册(在此使用OS X,但每个平台都应该相同)。



 类似资料:
  • 问题内容: 在我们的Web应用程序中,用户可以进行需要大量数据库表进行更新的更改。所有内容的加载时间最长为30秒。我不希望用户在导航到另一个页面之前等待其完成。 我将长时间运行的代码放在自己的页面上(例如,“ updateinfo.aspx”),并尝试了一些解决方案,包括jQuery AJAX调用“ updateinfo.aspx”或加载调用“ updateinfo.aspx”的图像文件。在所有情

  • 问题内容: 我是处理这么多数据(2000万行)的新手,而且我不知道我对查询持续时间的期望是什么: 没有现场索引。这段陈述花了25分钟。数据库设置为简单恢复。25分钟似乎太长了吗?该表有9列,其中小数据类型<50 varchar。 问题答案: 如果您在一个事务中更新了2000万行,那么您的时间完全由IO子系统决定:您拥有哪种驱动器,磁盘文件的布局等等。如果RAID 40中有40个心轴,其中有4个平衡

  • 问题内容: 在 pipe 上使用2个 队列 在进程之间进行通信有什么优势(如果有)? 我正在计划使用python模块。 问题答案: 最大的好处是队列是进程和线程安全的。管道不是:如果两个不同的进程试图读取或写入pipe的同一端,则会发生不良情况。队列的抽象级别也比管道更高,这在您的特定情况下可能有优势,也可能没有优势。

  • 问题内容: 是否可以获取旧的运行过程的开始时间?如果今天不是开始日期,似乎会报告日期(而不是时间),如果今年不是开始日期,则只会报告日期。旧工艺会永远失去精度吗? 问题答案: 您可以指定格式器并使用,例如以下命令: 上面的命令将输出所有进程,并带有格式化程序以获取PID,命令运行以及启动日期和时间。 示例(从Debian / Jessie命令行) 您可以阅读的联机帮助页或查看Opengroup的其

  • 问题内容: 这是GUI编程中的新功能,我正在尝试为我的python解析器之一创建GUI。 我知道 : Tkinter是单线程的。屏幕更新在整个事件循环中每次旅行时发生。每当您使用长时间运行的命令时,都在阻止事件循环完成迭代,从而阻止了事件的处理,从而阻止了重绘。 我的程序调用了一个大函数,大约需要5分钟才能完全运行它。因此,我猜唯一的解决方案是针对长期运行的命令使用线程。但是,我长期运行的命令已经

  • 本文向大家介绍python Jupyter运行时间实例过程解析,包括了python Jupyter运行时间实例过程解析的使用技巧和注意事项,需要的朋友参考一下 这篇文章主要介绍了python Jupyter运行时间实例过程解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 1.Python time time()方法 以上实例输出结果为: Pyt