12.1 启动与停止线程
Python 中的线程会在一个单独的系统级线程中执行(比如说一个POSIX 线程或者一个 Windows 线程),这些线程将由操作系统来全权管理。
线程一旦启动,将独立执行直到目标函数返回。
守护线程又叫后台线程,这些线程会在主线程终止时自动销毁。
1
t = Thread(target=countdown, args=(10,), daemon=True)
你无法结束一个线程,无法给它发送信号,无法调整它的调度,也无法执行其他高级操作。
如果需要这些特性,你需要自己添加。比如说,如果你需要终止线程,那么这个线程必须通过编程在某个特定点轮询来退出。
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26import time
from threading import Thread
class MyThread(Thread):
def __init__(self):
super().__init__()
self._running = True
def termination(self):
self._running = False
def run(self):
num = 10
while self._running and num > 0:
print('-------',num)
num -= 1
time.sleep(1)
thread1 = MyThread()
thread1.start()
time.sleep(2)
thread1.termination()
# ------- 10
# ------- 9
# [Finished in 2.3s]
12.2 判断线程是否已经启动
- Event 对象包含一个可由线程设置的信号标志,它允许线程等待某些事件的发生。
- 在初始情况下,event 对象中的信号标志被设置为假。
- 如果将一个 event 对象的信号标志设置为真,它将唤醒所有等待这个 event 对象的线程。