Python time.sleep 锁进程

Python time.sleep lock process

我想创建多进程应用程序。这是示例:

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。但是这里的 sleep 是和 class 一起使用的。我明白了(进程已完成,退出代码为 0 ) 结果当我 运行 回答时。谁能解释我哪里出错了?

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

从您的 target= 语句中删除括号,您将得到想要的结果

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

会做你想做的事