这更多是出于理论上的好奇心,而不是一个实际的问题。
假设您希望定期运行一些代码,那么使用计时器与使用线程+ time.sleep的优缺点是什么?以下两种方法也是如此。我知道线程方法并不完全是一秒间隔,而是在每次执行之后添加一个延迟,如果task_function操作需要很长的时间,这可能很重要。我也知道解决这个问题还有很多其他的方法,但是让我们关注一下线程包。
定时器逼近
def task_function():
print(time.time())
def task():
task_function()
threading.Timer(1,task).start()
task()线程方法
def task_function():
while True:
print(time.time())
time.sleep(1)
threading.Thread(target=task_function).start()我在某个地方读到,启动线程非常耗费资源。因此,我想知道,如果您有一些代码,您希望每0.1秒运行,计时器方法不是次优,因为一个新的线程必须启动这么频繁?
发布于 2019-12-05 03:11:07
如果代码必须在间隔内重复,那么使用普通的Thread (首先,Timer只是Thread的一个薄包装;它是作为一个子类实现的)。每秒生成一个新线程(通过Timer) 10倍是浪费的,而且在任何情况下都不会给您带来任何好处。
但是,您应该将辅助线程变成守护进程线程,除非您真的希望它无限期地保持进程的活力。
https://stackoverflow.com/questions/59187617
复制相似问题