随笔分类 -  并发编程

摘要:进程 数据隔离 数据不安全(数据共享Manager()) 操作系统级别的 开启关闭开销大 能利用多核 线程 数据共享 数据不安全(出现 if while += -=) 操作系统级别的 开启关闭开销小 Cpython解释器下不能利用多核 协程 数据共享 数据安全(协程之间的所有切换都时由用户进行切换的 阅读全文
posted @ 2021-07-02 01:06 刘家小仙女 阅读(79) 评论(0) 推荐(0)
摘要:协程 协程是操作系统不可见的 什么是协程? 协程本质上就是一条线程,多个任务在一条线程上来回切换,来规避IO操作,就达到了我们将一条线程中的IO操作降到最低的目的。 gevent 第三方模块 gevent,利用了底层模块(greelet)完成切换 + 自动规避IO的功能 gevent模块不能规避所有 阅读全文
posted @ 2021-07-02 01:05 刘家小仙女 阅读(592) 评论(0) 推荐(0)
摘要:池concurrent.futrues 什么是池? 要在程序开始的时候,还没提交任务,先创建几个线程或者进程放在一个池子里,这就是池 为什么要用池? 如果先开好进程/或线程,那么有任务之后就可以直接使用这个池中的数据了 开好的进程或线程会一直存在池中,可以被多个任务反复利用,这样极大的减少了开启,关 阅读全文
posted @ 2021-07-02 01:03 刘家小仙女 阅读(2920) 评论(0) 推荐(0)
摘要:判断数据是否安全 并发运用数据共享,异步,则数据不安全 并发运用+=,*=,-=,/=,赋值等则数据不安全 并发时运用if 、while 条件的则数据不安全 阅读全文
posted @ 2021-07-02 01:00 刘家小仙女 阅读(79) 评论(0) 推荐(0)
摘要:进程队列queue 特点 能够实现进程之间的通信 数据安全 先进先出 实现原理 基于管道+锁 管道基于文件级别的socket+pickle实现的 from multiprocessing import Process from multiprocessing import Queue def f_p 阅读全文
posted @ 2021-07-02 00:59 刘家小仙女 阅读(67) 评论(0) 推荐(0)
摘要:线程队列queue queue:线程之间数据安全的容器队列 原理:加锁 + 链表 Queue 先进先出 import queue q=queue.Queue(4) #fifo 先进先出的队列 4:设置列表长度为4,只能放4个数 q.put(1) #放入 print(q.get()) #取出 try: 阅读全文
posted @ 2021-07-02 00:57 刘家小仙女 阅读(88) 评论(0) 推荐(0)
摘要:递归锁(RLock) 递归锁可以开启多个锁(开启几个就要关闭几个),经常用于解决死锁现象 将多个锁,改成同时使用一把递归锁 缺点:效率没有互斥锁高 代码 from threading import Thread,RLock a=0 def son1(rlock): with rlock: for i 阅读全文
posted @ 2021-07-02 00:55 刘家小仙女 阅读(528) 评论(0) 推荐(0)
摘要:死锁现象 死锁现象的产生: 在开启多线程的时候使用多把锁A,B(互斥\递归)交替使用 规定必须拿到A才能使用B 小杨同时拿到A,B使用完释放锁的时候小王拿到了A,小刘拿到了B,两个人进入僵持状态,就形成了死锁。 解决方法: 将多个锁,改成同时使用一把递归锁 (经常用于突发解决死锁现象,缺点:执行效率 阅读全文
posted @ 2021-07-02 00:53 刘家小仙女 阅读(81) 评论(0) 推荐(0)
摘要:dic 查看CPU运行指令 只要没有出现 STORE_GLOBAL,那么数据基本是安全的 import dis a=0 def func1(): global a a+=1 dis.dis(func1) ''' 0 LOAD_GLOBAL 0 (a) #在CPU中加载全局变量 2 LOAD_CONS 阅读全文
posted @ 2021-07-02 00:52 刘家小仙女 阅读(126) 评论(0) 推荐(0)
摘要:守护进程和守护线程的对比 守护进程:守护进程会随着主进程的代码结束而结束,如果主进程结束之后还有其他子进程在运行,守护进程是不守护的, 在windows系统中开启线程需要加 if __name__ == 'main':,Linux,mac系统中则不用 from multiprocessing imp 阅读全文
posted @ 2021-07-02 00:50 刘家小仙女 阅读(144) 评论(0) 推荐(0)
摘要:守护线程 为什么主线程会等子线程结束之后在结束? 主线程结束,进程就会结束 守护线程随着主线程的结束而结束 守护线程在主线程结束之后会守护其他子线程吗? 会 代码: import time from threading import Thread def son1(): while True: pr 阅读全文
posted @ 2021-07-02 00:47 刘家小仙女 阅读(47) 评论(0) 推荐(0)
摘要:线程互斥锁和GIL的区别 1.线程互斥锁是Python代码层面的锁,解决Python程序中多线程共享资源的问题(线程数据共共享,当各个线程访问数据资源时会出现竞争状态,造成数据混乱); 2.GIL是Python解释层面的锁,解决解释器中多个线程的竞争资源问题(多个子线程在系统资源竞争是,都在等待对象 阅读全文
posted @ 2021-07-02 00:46 刘家小仙女 阅读(411) 评论(0) 推荐(1)
摘要:线程锁(互斥锁)(Lock) 在开启多个线程的时候使用if、while、+-、\的时候会导致数据不安全(各个线程访问数据资源时会出现竞争状态,造成数据混乱)所以必须加锁 代码: from threading import Thread,Lock a=0 def son1(lock): with lo 阅读全文
posted @ 2021-07-02 00:40 刘家小仙女 阅读(170) 评论(0) 推荐(0)
摘要:GIL锁(全局解释器锁)(线程) 什么是GIL锁? 1.GIL是Python解释层面的锁,解决解释器中多个线程的竞争资源问题(多个子线程在系统资源竞争是,都在等待对象某个部分资源解除占用状态,结果谁也不愿意先解锁,然后互相等着,程序无法执行下去)。 2.在Cpython解释器下,GIL(全局解释器锁 阅读全文
posted @ 2021-07-02 00:37 刘家小仙女 阅读(173) 评论(0) 推荐(0)
摘要:线程 什么是线程:能被操作系统调度(给CPU执行)的最小单位 同一个进程中的多个线程可以同时被CPU执行 线程的优缺点: 优点:资源共享,效率高,开启关闭切换时间开销小,可以被多个CPU调度,由操作系统负责调度 缺点:数据不安全 同一进程中的线程资源共享,可以利用多核,操作系统调度,数据不安全,开启 阅读全文
posted @ 2021-07-02 00:34 刘家小仙女 阅读(89) 评论(0) 推荐(0)
摘要:进程之间数据共享 使用Manager() 缺点: 数据不安全(可以加锁解决) 速度慢 代码: from multiprocessing import Process from multiprocessing import Manager from multiprocessing import Loc 阅读全文
posted @ 2021-06-21 23:44 刘家小仙女 阅读(62) 评论(0) 推荐(0)
摘要:异步阻塞 没有按照顺序等待结果,而是所有的任务都在异步执行着,但是我要等结果又不知道谁的结果先来,谁先结束我就先获取谁的结果 import requests from multiprocessing import Process from multiprocessing import Queue u 阅读全文
posted @ 2021-06-21 23:42 刘家小仙女 阅读(248) 评论(0) 推荐(0)
摘要:生产者消费者模型 生产者将要处理的数据放入一个容器中,消费者从容器中取出 生产者:通常在放数据之前需要通过某些代码来获取数据 消费者:通常取到数据之后在进行某些操作 本质: 把原本获取数据处理数据的完整过程进行了解耦(注:紧耦合程序:所有代码写在一起不分函数,类,文件比较乱(不好),松耦合性:拆分的 阅读全文
posted @ 2021-06-21 23:41 刘家小仙女 阅读(150) 评论(0) 推荐(0)
摘要:进程之间通信(IPC) 进程之间是数据隔离的 进程之间通信的方式 基于文件:适用于同一台机器上的多个进程之间通信 Pipe 管道 不加Lock锁,所以数据不安全 Queue 队列(先进先出)队列是基于socket\pikel\Lock实现的,数据是安全的,不需要加锁 基于socket的文件级别的通信 阅读全文
posted @ 2021-06-21 23:38 刘家小仙女 阅读(86) 评论(0) 推荐(0)
摘要:from multiprocessing import Process import time def son1(): while True: time.sleep(0.1) print('in son1') def son2(): for i in range(10): print('in son 阅读全文
posted @ 2021-06-21 23:37 刘家小仙女 阅读(86) 评论(0) 推荐(0)