Python爬虫的多线程使用方法

Python爬虫的多线程使用方法,第1张

Python爬虫的多线程使用方法

1.构造线程
构建新的线程有两种方法,一种是直接通过Thread方法构建一个线程,另一种时通过继承Thread类,重写run()方法构建。
Thread(group=None,target=None,name=None,args=(),kwargs={})

  • groups :线程组,这个暂时不用管,官方文档是这样说的:“group should be None”,所以我们可以不写就行。
  • target :我们要使用线程的方法
  • name :线程名
  • args/kwargs :传给方法的参数。要注意,如果只有一个参数,元组记得加个“,”,否则就会报错。

2.其他实例方法

  • setDaemon(bool) :设置守护线程,参数默认为False,如果需要设置,则设置为True,将子线程设置成守护线程后,主线程结束,无论守护线程是否执行完毕,守护线程和主线程一起停止。看一下下面这个示例就知道了。
  • 守护线程有两种设置方法,守护线程一定要在线程执行前设置,否则无效。主任务结束后,守护线程其实还没有结束,但也一起随主线程结束了。
  • start() :这个不用再多介绍了,就是启动线程
  • join(timeout) :这个就是为了防止主线程直接结束,先阻塞当前进程,直到调用这个方法的进程终止,或者达到设置的可选参数timeout时限。
  • setName(anme)/getName(name) :设置/获取线程名字
  • isAlive() :返回线程是否在运行。
  • enumerate() :返回正在运行的线程名
  • activeCount() : 返回正在运行的线程数

3.锁,可重入锁

    具体方法如下:
        acquire([timeout]): 请求获得锁定。使线程进入同步阻塞状态。
        release(): 释放锁。使用前线程必须已获得锁定,否则将抛出异常。
        关于线程的锁的案例,这里给出一个简单的指令锁的示例,主要看下,锁的作用。

简单的线程代码如下:

import time
import threading


def spider(a):
    print("启动任务")
    print(f"执行的参数为{a}")
    time.sleep(5)
    print(f"结束任务{a}")
    print('已经结束任务')


def main():
    start_time = time.time()
    for i in range(1,5):
        s1 = threading.Thread(target=spider, args=(i,))
        s1.start()
        # 等待两个子线程结束再结束主线程
    s1.join()
    end_time = time.time()
    total_time = end_time - start_time
    print(f"所有任务结束,总耗时为:{total_time}")

main()

到这里已经简单的介绍完毕。

上面内容如有侵权,请及时联系我删除。

谢谢观看!!!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zaji/5684744.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-17

发表评论

登录后才能评论

评论列表(0条)

保存