Python多线程Threading

目录

Python并发编程简介

1.为什么要引入并发编程?

2.有哪些程序提速的方法?

3.python对并发编程的支持

 怎样选择多线程Thread、多进程Process、多协程Coroutine

1.什么是CPU密集型计算、IO密集型计算?

2.多线程、多进程、多协程的对比

3.怎样根据任务选择对应技术?

 Python速度慢的罪魁祸首,全局解释器锁GIL

1.python速度慢的两大原因

2.GIL是什么?

3.为什么有GIL这个东西?

4.怎样规避GIL带来的限制?

 使用多线程,Python多线程被加速10倍

1.Python创建多线程的方法

2.改写爬虫程序,编程多线程爬取

3.速度对比:单线程爬虫VS多线程爬虫

Python实现生产者消费者模式多线程爬虫!

1.多组件的Pipeline技术架构

2.生产者消费者爬虫的架构

3.多线程数据通信的queue.Queue

4.代码编写实现生产者消费者爬虫

Python线程安全问题及解决方案

1.线程安全概念介绍

2.Lock用于解决线程安全问题

3.实例代码演示问题以及解决方案

好用的线程池ThreadPoolExecutor

1.线程池的原理

2.使用线程池的好处

3.ThreadPoolExecutor的使用语法

4.使用线程池改造爬虫程序

在web服务器中使用线程池加速

1.web服务的架构以及特点

2.使用线程池ThreadPoolExecutor加速

3.代码Flask实现web服务并加速实现

使用多进程multiprocessing加速程序的运行

1.有了多线程threading,为什么还要用多进程multiprocessing

2.多进程multiprocessing知识梳理

3.代码实战:单线程、多线程、多进程对比CPU密集计算速度

在Flask服务中使用进程池加速

Python异步IO实现并发爬虫

​在异步IO中使用信号量控制爬虫并发度

​使用subprocess启动电脑任意程序听歌、解压缩、自动下载等等


Python并发编程简介

1.为什么要引入并发编程?

场景1:一个网络爬虫,按顺序爬取了1小时,采用并发下载减少到20分钟!

场景2:一个APP应用,优化前每次打开页面需要3秒钟,采用异步并发提升到每次200毫秒;

2.有哪些程序提速的方法?

3.python对并发编程的支持

 怎样选择多线程Thread、多进程Process、多协程Coroutine

1.什么是CPU密集型计算、IO密集型计算?

2.多线程、多进程、多协程的对比

3.怎样根据任务选择对应技术?

 Python速度慢的罪魁祸首,全局解释器锁GIL

1.python速度慢的两大原因

2.GIL是什么?

3.为什么有GIL这个东西?

4.怎样规避GIL带来的限制?

 使用多线程,Python多线程被加速10倍

1.Python创建多线程的方法

2.改写爬虫程序,编程多线程爬取

blog_spider.py

import requests
urls=[f"https://www.cnblogs.com/#p{page}"
      for page in range(1,50+1)
      ]
def craw(url):
    r=requests.get(url)
    print(url,len(r.text))
craw(urls[0])

 multi_thread_craw.py

import blog_spider
import threading
import time
def single_thread():
    print("single_thread begin")
    for url in blog_spider.urls:
        blog_spider.craw(url)
    print("single_thread end")
def multi_thread():
    print("single_thread begin")
    threads=[]
    for url in blog_spider.urls:
        threads.append(
            threading.Thread(target=blog_spider.craw,args=(url,))
        )
    for thread in threads:
        thread.start()
    for thread in threads:
        thread.join()
    print("single_thread end")

if __name__=='__main__':
    start=time.time()
    single_thread()
    end=time.time()
    print("single thread cost:",end-start)

    start = time.time()
    multi_thread()
    end = time.time()
    print("multi thread cost:", end - start)

3.速度对比:单线程爬虫VS多线程爬虫

Python实现生产者消费者模式多线程爬虫!

1.多组件的Pipeline技术架构

  • 19
    点赞
  • 100
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值