栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

Python-time.sleep(n)cpu是否密集?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

Python-time.sleep(n)cpu是否密集?

不,它不占用CPU。

该文件说:

暂停执行指定的秒数。

Python实际上不能保证在每种可能的实现中,这意味着OS永远不会在睡眠期间调度您的进程。但是在每个平台上,Python都尝试在指定的时间内执行适当的操作以在不使用任何CPU的情况下进行阻塞。在某些平台上,这可能仍意味着需要一点CPU,但它将在合理范围内尽可能减少。

特别是,由于您询问了linux,大概是CPython,所以:

在linux和大多数其他POSIX平台上,通常会使用

select
。请参阅3.3源。

该手册页使得它很清楚,

select
处于暂停状态直到信号,超时或准备I /
O(在这种情况下,有没有FDS,因此后者是不可能的)。

您可以阅读内核源代码以获取全部详细信息,但是基本上,除非有任何意外的信号,否则根本不会安排您的计划,除非在开始时可能会进行少量旋转

select
(作为对以下情况的优化)
select
几乎可以立即返回)。


在您的摘要中间,问题从“

sleep
CPU密集型”变为“我应该使用
sleep
,还是cron作业?”

无论哪种方式,您都不会在等待时燃烧任何CPU。有一些优点和缺点,但大多数都是琐碎的。从(大致上和主观上)最重要到最不重要的是,cron工作:

  • 允许配置,例如更改时间表,而无需编辑源代码。
  • 需要配置才能工作。
  • 意味着更少的代码-意味着更少的错误,并且对于以后的读者来说也更少。
  • 将在系统关闭期间持续存在。
  • 即使您的脚本异常退出或发出信号,也将再次触发。
  • 如果错过了预定的时间间隔N次(未指定,并且不同的cron实现执行不同的操作),则可能触发0、1或N次,而不是保证为0。
  • 有更好的机会处理系统时钟更改。
  • 每次启动时,都必须为进程启动,解释器启动等付费。
  • 不会浪费页表和进程表空间,因为没有进程在运行,也没有内存映射。


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/405737.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号