前言
前面的subprocess库主要讲解的是进程知识与进程间的交互。而进程有可以拥有多个线程,所以threading库提供了管理多个线程执行的API,允许程序在同一个进程空间并发地运行多个操作。
本篇,将详细的介绍Python线程库:threading。
Thread对象
要使用threading库,最简单的方式是使用Thread,它可以直接通过函数实例化一个Thread对象,并调用start让它工作。毕竟,我们用线程也是为了执行耗时任务,把任务封装到一个函数中,直接创建往往最简单。
示例如下:
import threading
def print1tonum(num):
for i in range(10000):
print(i)
t = threading.Thread(target=print1tonum,args=(10000,))
t.start()
运行之后,效果如下:
这里,我们创建了一个线程,并向它传递参数告诉它要完成什么工作。
区分线程
一般来说,我们创建线程是避免在主线程中处理耗时的任务,但是有时候,就算是基本的运算任务,因为其叠加起来非常的多,我们会考虑用多个线程进行处理。示例如下:
import threading
import time
def printThreadName1():
print(threading.current_thread().getName() + " start")
time.sleep(0.2)
print(threading.current_thread().getName() + ' end')
def printThreadName2():
print(threading.current_thread().getName() + " start")
time.sleep(0.2)
print(threading.current_thread().getName() + ' end')
def printThreadName3():
print(threading.current_thread().getName() + " start")
time.sleep(0.2)
print(threading.current_thread().getName() + ' end')
t1 = threading.T