Python中的多线程介绍

59 阅读1分钟

一个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。