当前位置:   article > 正文

Python爬虫——多线程爬虫如何实现?_爬虫线程怎么用

爬虫线程怎么用

1.多任务

多任务指的是在同一时间不同任务需要同时进行的场景,比如边听歌边刷题,边看电视边吃饭…

  • 要实现多任务的进行,我们首先会想到的方式如下:
import time

# 吃饭
def Eat():
    for i in range(4):
        print('eating...')
        time.sleep(1)
# 看电视
def Watch():
    for i in range(4):
        print('watching...')
        time.sleep(1)

if __name__ == '__main__':
    Eat()
    Watch()
    
# --结果:--
# eating...
# eating...
# eating...
# eating...
# watching...
# watching...
# watching...
# watching...
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26

嗯,,,但这是同时进行吗?仔细一想他们是有先后顺序的吧。

2.主线程与子线程

2.1 何谓线程、主线程及子线程

  • 线程:每个正在系统上运行的程序都是一个进程。每个进程包含一到多个线程。线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行。也可以把它理解为代码运行的上下文。
  • 主线程:程序启动时自己执行本身的代码的线程
    子线程:用户自己创建的线程
  • 主线程和子线程之间的关系:主线程是在子线程结束之后再执行的
  • 实现方式:join()方法,使子线程结束后再执行主线程;setDaemon()守护线程,不会等待子线程,有空就执行
    看看代码和结果消化一下吧!
import threading
import time

def speak():
    # 子线程
    print('A先说!')
    time.sleep(1)

if __name__ == '__main__':
    for i in range(5):
        t = threading.Thread(target=speak)
        t.start()
    print('B有话要说!')
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

结果(执行了几十次吧)出现了以下三种情况:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在t.start()后面添加

t.join()
  • 1

时间会按照先后顺序来了,但是结果确实只有第三种了,剩下的setDaemon()加了与没加效果一样

2.2 查看线程数量

有事我们需要查看有哪些进程运行了可以使用:threading.enumerate()

例如:

import threading
import time

def speak()
  • 1
  • 2
  • 3
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/我家自动化/article/detail/189672?site
推荐阅读
相关标签
  

闽ICP备14008679号