在Python 2中线程化一个无休止的while循环



我不知道为什么这不起作用。线程在定义后立即启动,并且似乎不在实际线程中。。。也许我错过了什么。

import threading
import time
def endless_loop1():
    while True:
        print('EndlessLoop1:'+str(time.time()))
        time.sleep(2)
def endless_loop2():
    while True:
        print('EndlessLoop2:'+str(time.time()))
        time.sleep(1)
print('Here1')
t1 = threading.Thread(name='t1', target=endless_loop1(), daemon=True)
print('Here2')
t2 = threading.Thread(name='t2', target=endless_loop2(), daemon=True)
print('Here3')
t1.start()
print('Here4')
t2.start()

输出:

Here1
EndlessLoop1:1446675282.8
EndlessLoop1:1446675284.8
EndlessLoop1:1446675286.81

您需要给target=一个可调用对象

target=endless_loop1()

在这里,实际上正在调用endless_loop1(),所以它会立即在主线程中执行。你想做的是:

target=endless_loop1

它将函数对象传递给CCD_ 3,以便它可以自己调用它。

此外,daemon实际上并不是一个init参数,在调用start:之前需要单独设置它

t1 = threading.Thread(name='t1', target=endless_loop1)
t1.daemon = True

最新更新