Skip to main content
 首页 » 编程设计

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

2025年05月04日33落叶无声

我不确定为什么这不起作用。线程一定义就启动,似乎不在实际线程中……也许我遗漏了什么。

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 

它将函数对象传递给您的 Thread,以便它可以自行调用它。

另外,daemon其实并不是一个初始化参数,需要在调用start之前单独设置:

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