摘要:
协程 协程的本质:就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率。 # 可以控制多个任务之间的切换,切换之前将任务的状态保存下来,以便重新运行时,可以基于暂停的位置继续执行。 # 可以检测io操作,在遇到io操作的情况下才发生切换 协程特点 必须在只有一 阅读全文
摘要:
线程池-concurrent.futures模块 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异步调用 方法 submit(fn, *args, **kw 阅读全文
摘要:
线程队列 queue 使用import queue,用法与进程Queue一样 queue.Queue 先进先出:队列模型 queue.Queue(maxsize=0) #先进先出 import queue q=queue.Queue() q.put('first') q.put('second') 阅读全文
摘要:
GIL和锁 全局解释器锁GIL Python 解释器中可以“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。 对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行。 在多线程环境中,Python 虚拟机按以下方式执行: a、设置 GIL; b、 阅读全文
摘要:
threading-Thread类 方法与multiprocessing中基本一致 线程创建 Thread类创建 from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' 阅读全文
摘要:
multiprocessing-Pool 进程池 进程池概念:定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务,等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务。如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空 阅读全文
摘要:
IPC 队列Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 Queue([maxsize]) # 创建共享的进程队列。 #参数 :maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。底层队列使用管道和锁定实现。 队列常用方法 阅读全文
摘要:
multiprocessing-Process,Lock Process类介绍 一个用来创建进程的类 Process类参数 Process([group [, target [, name [, args [, kwargs]]]]]) # 由该类实例化得到的对象,表示一个子进程中的任务(尚未启动) 阅读全文
摘要:
random模块 随机小数 random.random() # 大于0且小于1之间的小数 0.7664338663654585 random.uniform(1,3) #大于1小于3的小数 1.6270147180533838 随机整数 random.randint(1,5) # 大于等于1且小于等 阅读全文
摘要:
正则表达式 正则规则 第一条规则: 本身是哪一个字符,就匹配字符串中的哪一个字符 第二条规则:使用字符组,一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上 字符组 [ ] 格式:[字符1字符2] 可以指定范围 所有的范围都必须遵循ascii码从小到大来指定 [0- 阅读全文