在上一节Python多线程编程基础2:如何创建线程中,我们已经知道,创建线程并运行实际上也是执行一段代码,那么把这些代码封装到函数中之后,直接调用函数和创建线程再运行有什么区别呢?这是本文要解释的内容。简单地说,调用函数属于阻塞模式,必须要等函数运行结束并返回之后才能执行后面的代码;而线程属于并发非阻塞模式,创建并启动子线程之后子线程和主线程并发执行,除非有现成同步的代码和机制。
下面代码首先定义一个函数,然后调用这个函数,函数执行结束之后再继续执行后面的代码:
from threading import Thread
from time import sleep
def demo(n):
sleep(n)
print(n)
demo(3)
print('ok')
运行结果为:
3
ok
而下面的代码首先定义函数,然后创建线程来执行这个函数中的代码:
from threading import Thread
from time import sleep
def demo(n):
sleep(n)
print(n)
t = Thread(target=demo, args=(3,))
t.start()
print('ok')
运行结果为:
ok
3