python多线程基础学习

线程是程序执行的最小单位,一个进程至少有一个线程。

在爬虫中,可以通过异步爬虫提高爬虫效率,常见的异步爬虫有多线程、多进程、协程等

本文主要介绍python中多线程的简单实现,欢迎大家讨论学习!

在 Python 中,实现多线程的模块叫作 threading,是 Python 自带的模块。

一.直接创建多线程

我们可以使用 Thread 类来创建一个线程,创建时需要指定 target 参数为运行的方法名称。

from threading import Thread

def son():
    for i in range(1,1501):
        print('子线程',i)

if __name__ == '__main__':
    thr = Thread(target=son)
    thr.start()
    for i in range(2501,3001):
        print('主线程',i)

thr = Thread(target=son)表示创建子线程,thr.start()表示子线程为开始工作状态,具体运行时间有CPU决定。
如果是单线程运行,输出结果就是一排排整齐的输出,而上面的多线程程序中多线程同时运行,运行结果有重复,如下图。
python多线程基础学习_第1张图片

二.继承Thread类创建子线程

另外,我们也可以通过继承 Thread 类的方式创建一个线程,该线程需要执行的方法写在类的 run 方法里面即可。
据此可改写上述程序。

from threading import Thread

class mythread(Thread):
    def run(self):
        for i in range(1,1501):
            print('子线程',i)

if __name__ == '__main__':
    thr = mythread()
    thr.start()
    for i in range(2501, 3001):
        print('主线程', i)

注意: thr.start()表示开始子线程,若写thr.run()则表示单线程。
运行结果如下图,可以看出运行了多线程。
python多线程基础学习_第2张图片

三.线程传参

如果被调用的方法需要传入额外的参数,则可以通过 Thread 的 args 参数来实现。例:

from threading import Thread

def son(para):
    for i in range(1,1501):
        print(para,i)

if __name__ == "__main__":
    thr1 = Thread(target=son,args=('繁',))
    thr2 = Thread(target=son,args=('漪',))
    thr1.start()
    thr2.start()

程序开启了两个子线程,为区分它们,对其传入参数para,利用Thread 的 args 参数来实现,特别提醒:创建子线程传参数以元组的形式表示,即(‘繁’,) (‘漪’,)
结果如下:
python多线程基础学习_第3张图片

你可能感兴趣的:(python,学习,爬虫)