从命令行调用的python脚本中的多个线程

时间:2014-01-27 10:01:55

标签: python multithreading

在我目前正在web.py中实施的网络服务器上,我使用以下方法定期执行操作:

import threading    

def periodicAction():
    # do something
    threading.Timer(time_interval, periodicAction).start() # when finished, wait and then start same function in a new thread

periodicAction() # start the method

虽然它工作正常(意味着它做它应该做的事情),我仍然有问题,当我从命令行测试它时,控制台没有响应(我仍然可以键入,但它没有影响,即使ctrl + c也不会停止程序)。这是正常行为还是我做错了什么?

1 个答案:

答案 0 :(得分:1)

后台线程仍然在运行,所以如果主线程完成,它将等待 - 在这种情况下永远。 (如何等待Ctrl-C不起作用的副作用。)如果你不想这样,你可以调用setDaemon(True),这使得线程成为“守护进程“ - 意味着当主线程完成时它将被强制关闭:

def periodicAction():
    print "do something"
    t = threading.Timer(1.0, periodicAction)
    t.setDaemon(True)
    t.start()