【问题标题】:Creation of a timer thread in python在python中创建一个定时器线程
【发布时间】:2017-07-05 12:23:40
【问题描述】:
from threading import Thread, current_thread

def hello():
    print("hello, world")
    t = threading.Timer(3.0, hello)
    t.start()
    print current_thread().name 

hello()

这将每 3 秒定期创建一个新线程。我想知道创建的线程是否过期,然后会再次创建新线程。?我可以看到线程名称为“Thread-1”、“Thread-2”、“Thread-3”等被创建。我想知道“Thread-1”是否最终会退出,然后创建一个新线程,即“Thread-2”或仍然“Thread-1”将保持活动状态。请帮忙。

【问题讨论】:

  • 线程将首先调用函数hello,然后 - 完成后 - 退出。这意味着在t.start() 语句之后有两个线程处于活动状态:一个是刚刚创建的,另一个是“创建者”。在hello 返回后,只有一个线程处于活动状态。

标签: python multithreading python-2.7


【解决方案1】:

您的线程将在完成后退出。事实上,由于您的打印命令是 hello() 中的最后一行,这意味着线程一显示其名称就退出。您可以使用threading.enumerate() 显示所有正在运行的线程:

from threading import Thread, current_thread, Timer, enumerate

def hello():
    print("hello, world")
    t = Timer(3.0, hello)
    t.start()
    print enumerate()
    print current_thread().name, "exiting" 

hello()

唯一的例外是主线程,它不会退出,而是一直处于停止状态,直到您的程序退出,这在这段代码中永远不会发生,但尽管如此。所有其他线程完成它们的工作然后退出。

这能回答你的问题吗?

汉努

【讨论】:

  • 是的,它回答了......谢谢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
  • 1970-01-01
  • 2010-12-13
  • 2011-02-23
  • 1970-01-01
  • 1970-01-01
  • 2011-08-25
相关资源
最近更新 更多