今天主要学习多线程的相关知识。
一、多线程技术
- 主线程
每个进程默认都会有一个线程,这个线程我们一般叫做主线程。默认情况下,所有的代码都是在主线程中执行。 - 子线程
一个进程中可以有多个线程。除了主线程以外,其他线程需要手动的添加。 - threading是python中的一个内置模块,用来支持多线程。
Thread类的对象就是线程对象,需要线程的时候,就创建这个类或者这个类的子类对象。
Thread类创建线程的格式为:
Thread(target,args)
target:需要在子线程中调用的函数的函数名。
args:函数的实参,以元祖形式传参。
import threading
import datetime
import time
def download(file):
print(threading.currentThread())
print('开始下载:'+file, datetime.datetime.now())
time.sleep(10)
print(file+'下载结束:', datetime.datetime.now())
print('主线程中的代码')
print(threading.currentThread())
t1 = threading.Thread(target=download, args=('终结者',))
t1.start()
二、面向对象的多线程技术
面向对象实现多线程技术:
1、声明一个类继承Thread类
2、重写run方法,将需要在子线程中执行的任务放倒run方法中
3、在需要子线程的位置去创建这个类的对象,然后用对象调用start方法去执行run中的任务。
class DownloadThread(Thread):
"""下载线程类"""
def __init__(self, file):
super().__init__()
self.file = file
def run(self):
print(self.file + '开始下载:', datetime.datetime.now())
time.sleep(randint(5, 10))
print(self.file + '下载结束:', datetime.datetime.now())
t1 = DownloadThread('沉默的羔羊')
t1.start()
t2 = DownloadThread('恐怖游轮')
t2.start()