Python time.sleep锁进程

Python time.sleep锁进程,python,multithreading,thread-sleep,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__': ###

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

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()
在此代码中,第二个线程不工作。我猜,在调用
内部的sleep函数后,第一个线程
主进程处于休眠状态。我找到了。但这里的睡眠是用来上课的。我得到了(进程已完成,退出代码为0
)结果当我跑的时候回答。有人能解释一下我在哪里犯了错误吗

  • 我正在windows上使用python 3.*

创建线程时,实际上是在尝试为
线程设置目标时调用函数,而不是向其传递函数。这意味着,当您尝试创建
first\u线程时,实际上正在调用
start\u first
,其中包括很长的睡眠时间。我想你会因为看不到第二个线程的输出而感到沮丧,然后杀死它,对吗

target=
语句中删除paren,您将得到您想要的

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

在创建线程时,将执行您正在尝试的操作。在尝试为
线程设置目标时,您实际上是在调用函数,而不是将函数传递给它。这意味着,当您尝试创建
first\u线程时,实际上正在调用
start\u first
,其中包括很长的睡眠时间。我想你会因为看不到第二个线程的输出而感到沮丧,然后杀死它,对吗

target=
语句中删除paren,您将得到您想要的

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

方法1中的睡眠(1000)
太长,您必须等待1000秒,将其更改为
时间。睡眠(5)
以查看即时结果。好的,但它会阻止第二个线程。为什么它是这样工作的?它实际上会运行,但是方法1中的
时间太长了。sleep(1000)
需要等待1000秒,请将其更改为
时间。sleep(5)
以查看即时结果。好的,但它会阻塞第二个线程。为什么它是这样工作的?另外,如果你想用参数为函数创建线程,你可以使用
first\u thread=threading.thread(target=start\u first,args=())
同样,如果你想用参数为函数创建线程,你可以使用
first\u thread=threading.thread(target=start\u first,args=())