文章分类 - 【Python】learning
摘要:import asyncio async def func(): print('start') # await 可能会发生阻塞的方法 # await 关键字必须写在一个async函数里 await asyncio.sleep(1) print('end') loop = asyncio.get_ev
阅读全文
摘要:内容回顾: 池 concurrent.futrues 进程池 p = ProcessPoolExecutor(n) 线程池 p = ThreadPoolExecutor(n) future = submit 提交任务 future.result() 获取结果 map 循环提交任务 add_done_
阅读全文
摘要:# 带有io操作的内容写在函数里,然后提交func给gevent form gevent import monkey monkey.path_all() import time import gevent # 4cpu # 进程 5个进程 # 线程 20个线程 # 协程 500个 # 一个机器最多抗
阅读全文
摘要:进程 数据隔离 数据不安全 操作系统级别 开销非常大 能利用多核 线程 数据共享 数据不安全 操作系统级别 开销小 不能利用多核 正常的开发语言,多线程可以利用多核 cpython解释下的多个线程不能利用多核:规避了所有的io操作的单线程 协程 数据共享 数据安全 用户级别 跟小 不能利用多核 协程
阅读全文
摘要:进程池(高计算的场景,没有io,没有文件操作,没有数据库操作,没有网络操作,没有input) 线程池(一般的根据io的比例定制):cpu_count*5
阅读全文
摘要:池concurrent.futrues 线程池 进程池 协程 gevent 第三方模块 asyncio 底层协程模块 aiohttp模块 并发的爬虫 falsk轻量级的web框架/asnic异步的轻量级的web框架 async await 在程序开始的时候,还没提交任务先创建几个线程或者进程 极大的
阅读全文
摘要:队列 queue 线程队列 数据安全 原理:加锁 + 链表 实现先进先出这件事,利用列表是不占优势的,效率低的 先进先出的队列 Queue 后进后出的队列 LIFOQueue 栈 优先级队列 priorityQueue 放入数据的ascii码来从小到大输出
阅读全文
摘要:import queue # 专门处理线程的 from queue import Empty # 外置错误处理方法,不是内置的错误类型,而是queue模块中的错误 from queue import LifoQueue # 后进先出队列 from queue import PriorityQueue
阅读全文
摘要:线程锁****多个线程同时操作全部变量/静态变量 会产生数据不安全的现象 += -=说明了线程之间的数据的不安全 a = a.strip() 带返回值的都是先计算后赋值的,数据不安全 append pop 说明了在线程中操作列表中的方法是数据安全的 if\while 数据不安全 线程安全的单例模式
阅读全文
摘要:+= -= *= /= while if 数据不安全 + 和 赋值 append pop 数据安全 列表中的方式或者字典中的方法操作全局变量,数据安全 线程之间也存在数据不安全
阅读全文
摘要:守护进程 会随者主进程的代码结束而结束 如果主进程代码结束之后还有其他子进程在运行,守护进程不守护 守护线程 随着主线程的结束而结束 如果主线程代码结束之后还有其他子线程在运行,守护线程也守护
阅读全文
摘要:threading模块 与进程时间开销差距100倍 线程是不能从外部terminate 所有的子线程只能是自己执行完代码之后就关闭 .ident 获取线程的id current_thread().ident 在哪线程执行就获得那个线程的id enumerate 列表 存储了所有的活着的线程对象,包括
阅读全文
摘要:进程:数据隔离,资源分配的最小单位,可以利用多核,操作系统调度,开启关闭切换时间开销大 multiprocessing 如何开启进程 start join 进程有数据不安全的问题 Lock 进程之间可以通信ipc: 队列(安全)管道(不安全) 第三发工具 进程之前可以通过Manager类实现数据共享
阅读全文
摘要:Manager()共享文件 提供数据类型,但是数据不安全 with Manager() as m: 数据共享不同的写法
阅读全文
摘要:status_code 网络状态码 谁先回来,就拿谁的结果就是异步阻塞的过程 生产者消费者模型贴近异步阻塞过程 join()方法阻塞进程的过程
阅读全文
摘要:进程的内容 生产者消费者模型 爬取网页 数据共享 Manager 线程的概念 python当中的线程的特点 threading模块开启线程 开启进程的另一种方式 class 类名(process): def __init__(self,参数): self.属性名 = 参数 super().__ini
阅读全文
摘要:进程之间数据隔离 进程之间通信(IPC) Inter Process communication 基于文件:同一台机器上的多个进程之间的通信 Queue 基于socket的文件级别的通信来完成数据传递的 基于网络:多台or同一台都适合 第三方工具(消息中间件)这个非常重要!! memcache re
阅读全文
摘要:进程同步--Lock 锁 **** 进程之间的数据安全问题 lock = Lock() # 互斥锁,不能在同一个进程中连续acquire多次 lock.acquire() # 拿锁 lock.release() # 还锁 with lock # 还可以这样写,这样写更好,代替acquire和rele
阅读全文
摘要:守护进程 主进程会等待所有的子进程结束,是为了回收子进程的资源 守护进程会等待主进程的代码执行结束之后再结束,而不是等待整个主进程结束! 主进程的代码什么时候结束,守护进程就什么时候结束,和其他子进程的执行进度无关 p1.daemon = True # 表示设置p1是一个守护进程 面向对象的方法,通
阅读全文
摘要:开启进程的另一种方法 __init__方法解析 https://www.cnblogs.com/tp1226/p/8453854.html class MyProcess(Process): # 定义一个类,继承Process这个类 def __init__(self,a,b,c): # __ini
阅读全文