并发编程
文章平均质量分 81
python并发编程系列学习博客
wlq_1024
这个作者很懒,什么都没留下…
展开
-
并发编程(十二)使用subprocess启动电脑任意程序(听歌、解压缩、自动下载等等)
文章目录使用subprocess启动电脑的子进程subprocess的实例使用subprocess启动电脑的子进程subprocess模块:允许你生成新的进程连接它们的输入、输出、错误管道并且获取它们的返回码几个应用场景:每天定时自动打开音乐软件播放音乐调用解压缩软件自动解压缩文件通过python远程提交一个torrent种子文件,用电脑启动下载 subprocess的实例用默认的应用程序打开歌曲文件# 注:windows下是start,mac下原创 2021-03-24 18:12:04 · 1168 阅读 · 0 评论 -
并发编程(十一)python异步IO实现并发编程
文章目录异步IO原理python异步IO库:asyncio信号量(Semaphore)的使用 异步IO原理单线程爬虫执行流程(执行路径)从下图中我们可以看到,当第一个任务进行等待IO时,它不会像上图一样一直等待IO结束继续执行该任务,而是切换到第二个任务进行执行。直到全部执行到等待IO,再从头继续执行任务直至任务执行结束。在这儿就有必要提到《the one loop》the one loop至尊循环驭众生至尊循环寻众生至尊循环引众生普照众生欣欣荣也就是说,在这儿单线程原创 2021-03-24 18:10:04 · 503 阅读 · 2 评论 -
并发编程(十)在Flask服务中使用进程池加速
并发编程(十)在Flask服务中使用进程池加速# -*- coding: utf-8 -*-# @Time : 2021-03-22 16:35:26# @Author : wlq# @FileName: flask_process_pool.py# @Email :rd_wlq@163.comimport flaskimport mathimport jsonfrom concurrent.futures import ProcessPoolExecutorproces原创 2021-03-23 17:59:11 · 2101 阅读 · 1 评论 -
并发编程(九)使用多进程multiprocessing加速程序运行
文章目录为什么要使用多进程?多进程multiprocessing使用方法(对比多线程Threading)代码实战:单线程、多线程、多进程对比CPU密集计算速度为什么要使用多进程?有了多线程threading,为什么还要使用多进程multiprocessing如果遇到CPU密集型计算,多线程反而会降低执行速度!虽然有全局解释器锁GIL,但是因为有IO的存在,多线程依然可以加速运行。CPU密集型计算,线程的自动切换反而变成了负担,多线程甚至减慢了运行速度。为了解决上面这个问题。原创 2021-03-23 17:55:42 · 1544 阅读 · 3 评论 -
并发编程(八)在web服务中使用线程池加速
文章目录web服务的架构以及特点使用线程池ThreadPoolExecutor加速示例(用Flask实现web服务并实现加速)web服务的架构以及特点从上图可以看出,我们使用服务器访问网页时,浏览器会将我们的请求发送给比如Flask或者Django搭建的web服务器。web服务器会进行磁盘文件读取、数据库操作、调用远程服务API等操作,然后将它们的结果进行组合再操作并返回给我们,这就是web服务的大概介绍。总结来说,web服务有以下特点:web服务对响应时间要求非常高,比如要求200ms返回。原创 2021-03-22 18:10:44 · 518 阅读 · 0 评论 -
并发编程(七)好用的线程池ThreadPoolExecutor
文章目录线程池的原理使用线程池的好处ThreadPoolExecutor的使用语法示例线程池的原理在介绍线程池原理之前,先介绍一下线程的生命周期从上图我们可以基本了解线程的一个生命周期。其中,新建线程系统会分配资源,终止线程系统会回收资源,而进行这些工作都需要时间。那么,如果可以重复使用线程,则可以减去新建和终止线程的开销,这就是线程池的基本原理。接下来我们再看一个图,通过这个图我们将了解线程池的流转过程。从上图我们可以看出,每有一个新任务就会将其放到任务队列。而线程池中存放的是可以重复使用的线原创 2021-03-22 18:05:35 · 661 阅读 · 0 评论 -
并发编程(六)线程安全问题以及lock解决方案
文章目录线程安全概念介绍Lock用于解决线程安全问题示例线程安全概念介绍线程安全是指某个函数、函数库在多线程环境被调用时,能够正确地处理多个线程之间的共享变量,使程序功能正确完成。线程不安全是指由于线程的执行随时会发生切换,就造成了不可预料的结果,出现线程不安全。# account:银行账户# amount取钱金额def draw(account, amount): if account.balance >= amount: account.balance原创 2021-03-20 18:13:49 · 443 阅读 · 0 评论 -
并发编程(五)python实现生产者消费者模式多线程爬虫
文章目录多组件的Pipeline技术架构生产者消费者爬虫架构多线程数据通信的queue.Queue代码实现多组件的Pipeline技术架构在介绍或者使用生产者消费者模式前我们先大概了解一下Pipeline架构。例如,对于一件复杂的事情,我们常常都不会一下子做完,而是会分成很多中间步骤一步步完成,进而简化复杂的事情。请看下图:如图,我们现在有一个事情由输入数据得到输出数据,中间会经过很多的模块,而这些模块之间会通过中间数据进行交互。我们称这些处理模块为处理器也叫Processor,而原创 2021-03-20 18:10:06 · 1162 阅读 · 0 评论 -
并发编程(四)如何使用多线程,使用多线程对爬虫程序进行修改及比较
文章目录Python创建多线程的方法使用最基本的方法爬取数据分别使用单线程和多线程来比较程序执行速度两者相差19倍,从而体现出使用多线程的必要性。Python创建多线程的方法# 1.准备一个函数def my_func(a, b): do_craw(a, b) # 2.创建一个线程import threadingt = threading.Thread(target=my_func, args=(100, 200))# 3.启动线程t.start()# 4.等待结束t原创 2021-03-20 18:07:09 · 396 阅读 · 0 评论 -
并发编程(三)Python编程慢的罪魁祸首。全局解释器锁GIL
文章目录Python速度慢的两大原因GIL是什么?为什么存在GIL?怎么样规避GIL带来的限制?Python速度慢的两大原因在介绍python速度慢的原因之前,先来看看python速度有多慢以及现状。相比C/C++/JAVA,Python确实慢,甚至在一些特殊场景下,Python比C++慢100~200倍。现状:由于速度慢的原因,许多公司的基础架构代码都是用C/C++来开发实现的。比如推荐引擎、搜索引擎、存储引擎等。具体原因:python是动态类型语言,边解释边执行。原创 2021-03-20 18:06:10 · 548 阅读 · 0 评论 -
并发编程(二)怎样选择多线程多进程和多协程
文章目录python并发编程的三种方式:CPU密集型计算、IO密集型计算多线程、多进程、多协程的对比怎么根据任务选择对应的技术python并发编程的三种方式:多线程Thread多进程Process多协程Coroutine CPU密集型计算、IO密集型计算在了解以上三者对比之前,我们先来了解一下什么是CPU密集型计算、IO密集型计算CPU密集型计算(CPU-bound):CPU密集型也叫计算密集型,是指IO在很短的时间就可以完成,CPU需要大量的计原创 2021-03-20 18:04:41 · 629 阅读 · 0 评论 -
并发编程(一)python并发编程简介
文章目录1. 为什么要引入并发编程2. 有哪些程序提速的方法3. python对并发编程的支持1. 为什么要引入并发编程场景一:网络爬虫、一个小时的任务并发20分钟完成。场景二:APP应用,正常打开需要3秒,采用异步并发加载后提升到200毫秒所以说,并发编程是为了提升程序运行的速度。2. 有哪些程序提速的方法多线程并发(threading)多CPU并行(multiprocessing)多机器并行(Hadoop、hive、spark)3. python对并发编程的支持多线程:th原创 2021-03-20 18:00:04 · 506 阅读 · 0 评论