![](https://img-blog.csdnimg.cn/20201014180756928.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
python并发编程+异步
多线程 多进程 异步
鞍-
这个作者很懒,什么都没留下…
展开
-
celery-01、生产者消费者模式介绍 以及 以及 celery自动后台实现任务部署和异步调用
01、消费者和生产者模式--基本解释: 1、由生产者生成元素存入队列中,消费者不断问讯取出生成的元素做处理--实际意义: 1、常见的解耦方式之一,找到中间人broker,使得两个任务之间没有直接联系--应用: --生产者生成消息,缓存到消息队列中,消费者读取消息队列中的消息并执行。 --这里消息队列一般是rabbitMQ | redis,非常好用的 --redis会出现一个问题即突然断电会导致数据丢失,这里可以使用redis持久化策略部分解决问题,但会降原创 2020-10-08 02:52:22 · 1205 阅读 · 2 评论 -
12、多进程多线程应用测试教程01 -- 如何把生产者消费者模式应用在多线程、多进程中及它们的线程、进程池中
多进程多线程应用测试教程: 锚定在一定的实际问题上的代码,不是凭空炫技,每种都需要设想使用场景和使用意义01、最基本的两个多进程的消费者 生产者模式代码示例--日常代码中常常会出现: --一边生产,一边处理的场景。有的时候就是简单的两个进程,而不需要涉及到更多的进程安排,这种需求可以按照如下来做 --当然优化的方向也有很多,根据不同的处理逻辑可以嵌套更多的进程和线程达到提高速度的目的--这里需要注意的是: --使用multiprocessing自带的Queue.原创 2020-11-16 23:05:33 · 90 阅读 · 0 评论 -
11、协程和io教程02 -- IO多路复中select+回调+事件循环获取
01、非阻塞IO完成http请求--通过设置: client.setblocking(False) # 设置不阻塞连接过程,直接设置会报错 -- BlockingIOError: [WinError 10035] 无法立即完成一个非阻止性套接字操作。--在send recv函数上做错误处理OSError BlockingIOError,并不停循环。示例代码如下: --这种方式属于IO非阻塞实现http请求# 非阻塞IO带给我们的好处:通过非阻塞IO实现import ti原创 2020-11-16 17:09:15 · 321 阅读 · 0 评论 -
11、协程和io教程01 -- 并发 并行 同步 异步 阻塞 非阻塞 以及 IO多路复用概念和讲解
01、协程预先铺垫--协程这一章比线程更加复杂,需要和socket那两章混合起来学习学习02、并发 并行--并发:一个时间段内【不是一个时间点】,运行多个程序。但是每一时刻cpu中只能有一个程序在执行,那么这些执行的程序就是处于并发状态的。--并行:同一时刻,多个代码同时运行在多个cpu上,代码处于并行状态03、同步 异步--同步:当出现IO操作时,必须等待IO操作返回时才继续执行的操作称为同步。不涉及到IO操作时不需要考虑是否同步--异步:不需要等待IO操作执行完毕返回结原创 2020-11-13 00:51:47 · 309 阅读 · 0 评论 -
10、进程间通信
01、多线程中queue队列通信方式直接用于多进程报错 -- 不能使用 from queue import Queueimport timefrom multiprocessing import Processfrom queue import Queue""" 这个是为了说明:多线程中的queue通信方式直接使用到多进程中会导致错误 ############## 报错如下 ############## TypeError: cannot pickle '_thre原创 2020-11-12 01:19:39 · 259 阅读 · 0 评论 -
09、使用multiprocessing来完成多进程编程
01、引子 ----这个例子是为了说明,进程之间资源不是共享的,会单独开辟空间--记住:如果父进程提前结束,其启动的子进程无法退出会造成资源占用等一系列问题,所以阻塞非常重要同时一次启动的总进程数也非常重要import osimport time# fork函数只在Linux/unix系统中起作用pid = os.fork() # 启动进程,将父进程中代码资源内存原封不动复制一份,并开辟新的空间进行执行print('liming')if pid == '0': prin.原创 2020-10-25 19:49:31 · 288 阅读 · 0 评论 -
08、多线程 和 多进程 :以斐波拉契亚数列计算为例,只需要切换一下类即可完成从多线程到多进程的转化
01、多线程 多进程之间区别 -- 演示cpu消耗大的代码,使用进程更加合算--多线程主要是针对高并发(io 爬虫) 和 不消耗CPU的操作--多进程主要是对消耗CPU的操作 (至于涉及到系统资源切换,线程比进程要差很多) --1、计算 --2、--关于多进程,多线程的使用,这里concurrent包使用起来非常方便省事。只需更改一下类即可import time# 斐波拉契亚数列检验多进程计算比多线程块def fib(n): if n <= 2: ..原创 2020-10-25 14:42:45 · 273 阅读 · 0 评论 -
07、进程初步使用 -- 线程池的使用 concorrent模块【进程池使用预热】
01、concurrent -- python中使用进程池 线程池 多线程 多进程进行编程的一个顶层设计的包--concurrent:在python3.2中引入的一个包,主要是做进程池 线程池,能帮助理解协程。--为什么需要线程池,进程池? --并发量的控制:使用semaphore不是非常好用,需要自己去维护和仔细审查逻辑并校验 --concurrent不仅用于简单控制进程数量,还可以用于其他方面。例如:主线程可以获取某一个线程的状态和返回值,在一个子线程结束以后做些什...原创 2020-10-24 23:40:12 · 946 阅读 · 0 评论 -
06、线程同步[ 线程安全 ] -- semaphore 【信号量】
01、semaphore -- 以爬虫作为案例进行讲解--semaphore: 是控制进入数量的锁--举例: 文件的读写:一般写入只允许一个进程来操作写入的进程,但是读出的进程一般都是允许多个的 --读和写可共存 --读和读可共存 --写与写互斥 爬虫:一次并发20个太多,需要每次三个三个的执行,这里就以爬虫作为案例进行讲解--代码示例:import threadingimport time# 做爬虫class Htm原创 2020-10-22 14:46:27 · 163 阅读 · 0 评论 -
05、线程同步[ 线程安全 ] -- condition 【条件变量】
01、condition -- 以古诗对答的方式看如何详细安排线程运行--condition:用于多线程之间复杂的通信的一个锁,又称条件变量例如:以一段对话为例: 小爱:天猫精灵,我们来对古诗吧 天猫精灵:好的 小爱:我住长江头 天猫精灵:君住长江尾 小爱:日日思君不见君 天猫精灵:共饮长江水 小爱:此水几时休 天猫精灵:此恨何时已 小爱:只愿君心似我心 天猫精灵:定不负相思意--最原始的,继承线程重写,无法按照顺原创 2020-10-22 14:02:10 · 213 阅读 · 0 评论 -
04、线程同步[ 线程安全 ] -- Lock 和 RLock锁
01、线程不安全举例import threadingtotal = 0def add(): global total for i in range(1000000): total = total + 1def desc(): global total for i in range(1000000): total = total - 1thread_01 = threading.Thread(target=add)t原创 2020-10-18 11:06:30 · 163 阅读 · 0 评论 -
03、task_done 和 join()成对使用解释
01、原创 2020-10-18 10:25:26 · 206 阅读 · 0 评论 -
02、线程间通信
01、线程为什么需要通信--线程会存在问题02、多线程使用全局变量进行通信:使用上一个博客爬虫案例作为讲解案例--为什么需要通信: --线程01:爬虫一个线程用于爬取主界面的url --线程02:取出爬取到的url进行解析进一步获取页面html详情--使用 global定义全局变量【共享变量】 || 使用参数传值的方式也行,因为python传递的是对象的引用import threadingimport timeurl_list = []def get_d原创 2020-10-18 10:24:38 · 63 阅读 · 0 评论 -
01、GIL锁 和 多线程编程
01、GIL:全局解释器锁【global interpreter lock】 --解释:python有一个机制保证 --01、一个逻辑cpu上只有一个线程在运行[ 即执行编译之后的字节码 ] --02、无法将多个线程部署到多个cpu上去--cpython中存在全局解释锁,但是对于pypi解释器就不存在这种问题--全局解释器释放锁的依据: --01、根据时间片或字节码执行进行划分 [ python内部决定的 ] --02、io调用的时候会释放全局解释器锁,...原创 2020-10-17 02:57:04 · 74 阅读 · 0 评论