摘要: 一、提交任务的两种方式 1、同步调用:提交任务后,就在原地等待任务完毕,拿到结果,再执行下一行代码,导致程序串行执行 2、回调函数--异步调用:提交完任务后,不用原地等待任务执行完毕, from concurrent.futures import ThreadPoolExecutor import 阅读全文
posted @ 2018-10-01 20:24 foremost 阅读(215) 评论(0) 推荐(0) 编辑
摘要: 1、class queue.Queue(maxsize=0) #队列:先进先出 2、class queue.LifoQueue(maxsize=0) #堆栈:last in fisrt out 3、class queue.PriorityQueue(maxsize=0) #优先级队列:存储数据时可设 阅读全文
posted @ 2018-10-01 16:24 foremost 阅读(298) 评论(0) 推荐(0) 编辑
摘要: 1、信号量(本质也是一把锁)Semaphore模块 信号量也是一把锁,可以指定信号量为5,对比互斥锁同一时间只能有一个任务抢到锁去执行, 信号量同一时间可以有5个任务拿到锁去执行, 如果说互斥锁是合租房屋的人去抢一个厕所,那么信号量就相当于一群路人争抢公共厕所,公共厕所有多个坑位, 这意味着同一时间 阅读全文
posted @ 2018-10-01 12:06 foremost 阅读(181) 评论(0) 推荐(0) 编辑
摘要: 一、GIL全局解释器锁 1、引子 在Cpython解释器中,同一个进程下开启的多线程,同一时刻只能有一个线程执行,无法利用多核优势 首先需要明确的一点是GIL并不是Python的特性,它是在实现Python解析器(CPython)时所引入的一个概念。 就好比C++是一套语言(语法)标准,但是可以用不 阅读全文
posted @ 2018-10-01 12:03 foremost 阅读(235) 评论(0) 推荐(0) 编辑