判断 Threading.start()
新线程是否执行完毕的过程可以通过几种方式实现。
方法一
使用 Threading.join()
等待线程执行完毕,然后检查线程是否处于活跃状态:
import threading
import time
def do_something():
print("Starting something...")
time.sleep(3) # 模拟耗时操作
print("Something finished.")
my_thread = threading.Thread(target=do_something)
my_thread.start()
my_thread.join()
if not my_thread.is_alive():
print("Thread finished.")
在这个例子中,我们创建了一个 do_something()
函数,该函数使用了 time.sleep()
模拟了一个耗时操作。
使用 Threading.Thread()
构造器创建了一个新的线程,并将 do_something()
函数作为线程的目标方法。接下来,我们使用 Threading.Thread.start()
方法启动了新的线程。因为新线程可能需要一些时间才能完成操作,所以我们使用 Threading.Thread.join()
方法通过等待直到线程完成的方式来解决问题。当线程执行完毕后,我们再次检查线程是否处于活跃状态,以此验证线程是否执行完毕。
方法二
使用一个全局标志位来指示线程是否已经执行完毕:
import threading
import time
def do_something():
global finished
print("Starting something...")
time.sleep(3) # 模拟耗时操作
print("Something finished.")
finished = True
finished = False
my_thread = threading.Thread(target=do_something)
my_thread.start()
while not finished:
print("Waiting for thread to finish...")
time.sleep(1)
print("Thread finished.")
在这个例子中,和第一个例子一样,我们创建了一个 do_something()
函数,该函数使用了 time.sleep()
模拟了一个耗时操作。但是和第一个例子不同的是,我们定义了一个全局标志位 finished
来指示线程是否已经执行完毕。除此之外,我们还使用了一个 while 循环来检查这个标志位变量。直到标志变量的值为 True
,即线程执行完毕,while
循环才会结束。
这两种解决问题的方法都是可以运行的,具体的实现方式可以根据自己的实际需要选择。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:判断Threading.start新线程是否执行完毕的实例 - Python技术站