我想创建多进程应用程序。这是样本:
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
)因此,当我运行答案。谁能解释一下我犯了什么错误?
答案 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()
会做你正在尝试的事情