摘要: asyncio模块 启动单个协程 用法 必须要是协程方法async def demo(): 阻塞前必须有await 必须创建事件循环loop = asyncio.get_event_loop() 任务执行必须加括号loop.run_until_complete(demo()) 必须先创建一个事件循环 阅读全文
posted @ 2020-06-06 22:01 Hedger_Lee 阅读(187) 评论(0) 推荐(0) 编辑
摘要: 协程 协程的本质:就是在单线程下,由用户自己控制一个任务遇到io阻塞了就切换另外一个任务去执行,以此来提升效率。 # 可以控制多个任务之间的切换,切换之前将任务的状态保存下来,以便重新运行时,可以基于暂停的位置继续执行。 # 可以检测io操作,在遇到io操作的情况下才发生切换 协程特点 必须在只有一 阅读全文
posted @ 2020-06-06 21:38 Hedger_Lee 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 线程池-concurrent.futures模块 介绍 concurrent.futures模块提供了高度封装的异步调用接口 ThreadPoolExecutor:线程池,提供异步调用 ProcessPoolExecutor: 进程池,提供异步调用 方法 submit(fn, *args, **kw 阅读全文
posted @ 2020-06-06 21:11 Hedger_Lee 阅读(168) 评论(0) 推荐(0) 编辑
摘要: 线程队列 queue 使用import queue,用法与进程Queue一样 queue.Queue 先进先出:队列模型 queue.Queue(maxsize=0) #先进先出 import queue q=queue.Queue() q.put('first') q.put('second') 阅读全文
posted @ 2020-06-06 21:01 Hedger_Lee 阅读(134) 评论(0) 推荐(0) 编辑
摘要: GIL和锁 全局解释器锁GIL Python 解释器中可以“运行”多个线程,但在任意时刻只有一个线程在解释器中运行。 对Python虚拟机的访问由全局解释器锁(GIL)来控制,正是这个锁能保证同一时刻只有一个线程在运行。 在多线程环境中,Python 虚拟机按以下方式执行: a、设置 GIL; b、 阅读全文
posted @ 2020-06-06 20:54 Hedger_Lee 阅读(182) 评论(0) 推荐(0) 编辑
摘要: threading-Thread类 方法与multiprocessing中基本一致 线程创建 Thread类创建 from threading import Thread import time def sayhi(name): time.sleep(2) print('%s say hello' 阅读全文
posted @ 2020-06-06 20:38 Hedger_Lee 阅读(120) 评论(0) 推荐(0) 编辑
摘要: multiprocessing-Pool 进程池 进程池概念:定义一个池子,在里面放上固定数量的进程,有需求来了,就拿一个池中的进程来处理任务,等到处理完毕,进程并不关闭,而是将进程再放回进程池中继续等待任务。如果有很多任务需要执行,池中的进程数量不够,任务就要等待之前的进程执行任务完毕归来,拿到空 阅读全文
posted @ 2020-06-06 20:23 Hedger_Lee 阅读(240) 评论(0) 推荐(0) 编辑
摘要: IPC 队列Queue 创建共享的进程队列,Queue是多进程安全的队列,可以使用Queue实现多进程之间的数据传递。 Queue([maxsize]) # 创建共享的进程队列。 #参数 :maxsize是队列中允许的最大项数。如果省略此参数,则无大小限制。底层队列使用管道和锁定实现。 队列常用方法 阅读全文
posted @ 2020-06-06 20:05 Hedger_Lee 阅读(171) 评论(0) 推荐(0) 编辑
摘要: multiprocessing-Process,Lock Process类介绍 一个用来创建进程的类 Process类参数 Process([group [, target [, name [, args [, kwargs]]]]]) # 由该类实例化得到的对象,表示一个子进程中的任务(尚未启动) 阅读全文
posted @ 2020-06-06 19:33 Hedger_Lee 阅读(212) 评论(0) 推荐(0) 编辑
摘要: random模块 随机小数 random.random() # 大于0且小于1之间的小数 0.7664338663654585 random.uniform(1,3) #大于1小于3的小数 1.6270147180533838 随机整数 random.randint(1,5) # 大于等于1且小于等 阅读全文
posted @ 2020-06-06 18:06 Hedger_Lee 阅读(112) 评论(0) 推荐(0) 编辑
摘要: 正则表达式 正则规则 第一条规则: 本身是哪一个字符,就匹配字符串中的哪一个字符 第二条规则:使用字符组,一个字符组就代表匹配一个字符,只要这个字符出现在字符组里,那么就说明这个字符能匹配上 字符组 [ ] 格式:[字符1字符2] 可以指定范围 所有的范围都必须遵循ascii码从小到大来指定 [0- 阅读全文
posted @ 2020-06-06 17:44 Hedger_Lee 阅读(202) 评论(0) 推荐(0) 编辑
摘要: re模块 常用方法 findall findall(正则,待匹配字符串) :会匹配字符串中所有符合规则的项并返回一个列表,如果没有匹配到返回一个空列表 ret = re.findall('\d+','alex83') 注意点: findall 中正则里面有分组,那么只保留分组中的内容 ret = r 阅读全文
posted @ 2020-06-06 17:41 Hedger_Lee 阅读(161) 评论(0) 推荐(0) 编辑
摘要: os模块 os模块是与操作系统交互的一个接口 文件夹相关 os.makedirs('dirname1/dirname2') 可生成多层递归目录 os.removedirs('dirname1') 若目录为空,则删除,并递归到上一级目录,如若也为空,则删除,依此类推,只能删除空目录 os.mkdir( 阅读全文
posted @ 2020-06-06 16:55 Hedger_Lee 阅读(104) 评论(0) 推荐(0) 编辑