首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >哪个更有效率?threading.Thread对threading.Timer

哪个更有效率?threading.Thread对threading.Timer
EN

Stack Overflow用户
提问于 2019-12-05 03:06:50
回答 1查看 465关注 0票数 0

这更多是出于理论上的好奇心,而不是一个实际的问题。

假设您希望定期运行一些代码,那么使用计时器与使用线程+ time.sleep的优缺点是什么?以下两种方法也是如此。我知道线程方法并不完全是一秒间隔,而是在每次执行之后添加一个延迟,如果task_function操作需要很长的时间,这可能很重要。我也知道解决这个问题还有很多其他的方法,但是让我们关注一下线程包。

定时器逼近

代码语言:javascript
复制
def task_function():
   print(time.time())

def task():
   task_function()
   threading.Timer(1,task).start() 
task()

线程方法

代码语言:javascript
复制
def task_function():
    while True:
        print(time.time())
        time.sleep(1)

threading.Thread(target=task_function).start()

我在某个地方读到,启动线程非常耗费资源。因此,我想知道,如果您有一些代码,您希望每0.1秒运行,计时器方法不是次优,因为一个新的线程必须启动这么频繁?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-12-05 03:11:07

如果代码必须在间隔内重复,那么使用普通的Thread (首先,Timer只是Thread的一个薄包装;它是作为一个子类实现的)。每秒生成一个新线程(通过Timer) 10倍是浪费的,而且在任何情况下都不会给您带来任何好处。

但是,您应该将辅助线程变成守护进程线程,除非您真的希望它无限期地保持进程的活力。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59187617

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档