一个Python应用程序在单线程上运行,除非你明确地启用多线程。
为什么多线程是有用的?Python中的代码是按顺序运行的,一条指令接着一条指令。
如果你定义一个函数,睡眠3秒,然后打印一些东西,像这样。
import time
def greet():
time.sleep(3)
print('hello')
greet()
print('world')
world 字符串在 3 秒后被打印出来,因为我们在greet() 函数里面调用time.sleep(3) 。
这只是一个愚蠢的例子,但想象一下处理一张图片,从网络上获取资源,或将一个大文件写入磁盘。任何可能需要大量时间的事情。
通过多线程,我们可以把需要大量时间的函数运行到一个单独的线程中,同时继续进行我们的程序。
threading 标准库模块有助于实现多线程。你从它那里导入Thread 。
from threading import Thread
然后我们把我们必须执行的函数作为target 参数传递给Thread() 函数,得到一个线程对象。
然后我们调用其start()方法来启动线程。
试着运行这段代码。
from threading import Thread
import time
def greet():
time.sleep(3)
print('hello')
t = Thread(target=greet)
t.start()
print('world')
现在你会看到world ,在hello 显示在控制台前3秒被打印出来。
除非你把线程(或它所启动的所有线程)结束,否则程序不会结束,除非你把线程作为一个deamon启动。
这些是多线程的基本原理。这很复杂,如果做得不好,会导致引入bug。