Python time.sleep锁定进程

时间:2015-05-25 12:48:43

标签: python multithreading thread-sleep

我想创建多进程应用程序。这是样本:

import threading
import time
from logs import LOG


def start_first():
    LOG.log("First thread has started")
    time.sleep(1000)


def start_second():
    LOG.log("second thread has started")


if __name__ == '__main__':
    ### call birhtday daemon
    first_thread = threading.Thread(target=start_first())

    ### call billing daemon
    second_thread = threading.Thread(target=start_second())

    ### starting all daemons
    first_thread.start()
    second_thread.start()

在此代码中,第二个线程不起作用。我想,在first_thread内部调用睡眠功能后,主进程就会睡觉。我找到了this post。但这里睡觉与课堂一起使用。我得到了(进程完成退出代码0 )因此,当我运行答案。谁能解释一下我犯了什么错误?

  • 我在Windows上使用python 3. *

1 个答案:

答案 0 :(得分:4)

创建线程时,实际上是在尝试设置Thread的目标时调用函数,而不是将函数传递给它。这意味着当您尝试创建first_thread时,您实际上正在调用start_first,其中包括非常长的睡眠时间。我想你会因为没有看到第二个线程的输出并将其杀死而感到沮丧,对吗?

target=语句中删除parens,您将得到您想要的内容

first_thread = threading.Thread(target=start_first)
second_thread = threading.Thread(target=start_second)
first_thread.start()
second_thread.start()

会做你正在尝试的事情