之前的一篇文章:Python多线程编程——多线程基础介绍,主要介绍了线程的基本知识,以及使用Python创建线程的一个简单的方法。
在之前的一篇文章的基础之上,给大家介绍使用Python进行多线程编程的时候,创建多个线程的两个方法。
一、使用函数来创建线程
使用函数来创建线程,顾名思义,就是我们把要完成的任务封装成一个个函数,然后使用 threading 库中的 threading.Thread(target=)
函数来创建线程,其中传给target的就是我们创建的函数。
比如我们要创建两个线程,一个线程用来执行 写字 这个任务,一个线程用来执行 绘画 这个任务,那么就可以将这两个任务封装成函数,然后再进行创建进程。示例代码如下:
import time
import threading
def writing():
print("我正在写字")
time.sleep(1) # 沉睡1秒,方便我们看到执行的过程
def drawing():
print("我正在绘画")
time.sleep(1) # 沉睡1秒,方便我们看到执行的过程
def main():
t1 = threading.Thread(target=writing) # 创建线程t1
t2 = threading.Thread(target=drawing) # 创建线程t2
t1.start() # 开始线程
t2.start() # 开始线程
time.sleep(1) # 沉睡1秒,方便我们看到执行的过程
if __name__ == '__main__':
main()
main()
main()
二、使用类来创建线程
除了使用函数来创建线程外,我们还可以使用类来创建线程。而且在实际的应用中,我们大多数情况下是使用类来创建线程,这样更好的体现出封装的概念。
与上面一样,我们要创建两个线程,分别用来执行 写字 任务和 绘画 任务。我们就可以创建写字和绘画的类。注意,这两个类是继承自 threading.Thread 类的,类创建好之后,我们要重写其中的 run 函数,把我们需要完成的动作写在 run 函数里面。
最后使用类来创建线程,示例代码如下:
import time
import threading
# 创建继承自threading.Thread的类,并重写其中的run函数
class Writing(threading.Thread):
def run(self):
print("我正在写字")
# 创建继承自threading.Thread的类,并重写其中的run函数
class Drawing(threading.Thread):
def run(self):
print("我正在绘画")
def main():
t1 = Writing() # 使用类来创建线程
t2 = Drawing() # 使用类来创建线程
t1.start()
t2.start()
time.sleep(1)
if __name__ == '__main__':
main()
main()
main()