进程:进程是系统进行资源分配的最小单位,每个进程都有自己的独立内存空间,不用进程通过进程间通信来通信,但是进程占据独立空间,比较重量级,所以上下文进程间切换开销比较大,但是比较稳定。 线程:是进程的实体,是cpu调度的最小单位,它比进程更小能独立运行的基本单位,线程基本不拥有系统资源,只占用一点运行 ...
分类:
编程语言 时间:
2019-02-16 09:19:00
阅读次数:
171
1 并发、并行、同步、异步、阻塞、非阻塞 并发、并行 并发是报一个时间段内有几个程序在同一个cpu上运行,但是任意时刻只有一个程序在cpu上运行。在一个时间段内某一个请求很快,能够响应的用户就越多,高并发。 并行是指任意时刻点上,有多个程序同时运行在多个cpu上,并行数量跟CPU数一致的,因此没有高 ...
分类:
其他好文 时间:
2019-02-16 00:06:45
阅读次数:
227
1 异步程序依然会假死 freezing 上面的例子中,hello1是一个耗时3s的异步任务,main也是一个异步方法,但是main需要调用hello1的返回值,所以必须登台hello1执行完成才能继续执行main,这说明异步也是会有阻塞的。 而之前定义的异步函数不用等待是因为事件循环将所有的异步操 ...
分类:
编程语言 时间:
2019-02-14 20:57:09
阅读次数:
193
1 进程和线程 进程 Process:一个正在运行的应用程序在操作系统中被视为一个进程,进程可以包括一个或多个线程。线程是操作系统分配处理器时间的基本单元,在进程中可以有多个线程同时执行代码。进程之间是相对独立的,一个进程无法访问另一个进程的数据(除非利用分布式计算方式)。 线程 Thread: 线 ...
分类:
编程语言 时间:
2019-02-14 16:39:37
阅读次数:
188
1 yiled from 的定义 从字面看是yield的升级改进版本,如果将 yield 理解成返回,那么 yield from 就是从哪里返回。 yield from 返回另一个生成器。而yield 只返回一个元素。有下面的等价关系: yield from iterable == for item ...
分类:
编程语言 时间:
2019-02-14 16:28:02
阅读次数:
296
asyncio之Coroutines,Tasks and Future Coroutines and Tasks属于High-level APIs,也就是高级层的api。 本节概述用于协程和任务的高级异步api。 Coroutines Coroutines翻译过来意思是协程,使用async/awai ...
分类:
其他好文 时间:
2019-02-12 19:01:55
阅读次数:
128
1 import requests 2 from bs4 import BeautifulSoup 3 from urllib import request 4 # import threading 5 import gevent 6 from gevent import monkey 7 8 mo... ...
分类:
编程语言 时间:
2019-02-12 13:10:43
阅读次数:
301
高性能相关 如何实现多个任务的同时进行 而且还效率高 串行实现 效率最低最不可取 多线程 多线程存在线程利用率不高的问题 协程+IO切换 gevent内部调用greenlet(实现了协程) 基于协程比线程更加省资源 事件循环 基于事件循环的异步非阻塞模块:Twisted ...
分类:
其他好文 时间:
2019-02-11 10:30:15
阅读次数:
146
goroutine示例 go // 主线程结束后 所有协程都会一起结束 // 在4个go程中结束时向chan c写入true // 开启go程后 在主线程中循环对管道c取值,取出4个true 说明go程执行完毕 再执行主线程并退出 func main() { c := make(chan bool, ...
分类:
其他好文 时间:
2019-02-08 20:09:22
阅读次数:
163
一直以来并发编程对于刚入行的小白来说总是觉得高深莫测,于是乎,就诞生了想写点东西记录下,以提升理解和堆并发编程的认知。为什么需要用的并发?凡事总有好坏两面,之间的trade-off是什么,也就是说并发编程具有哪些缺点?以及在进行并发编程时应该了解和掌握的概念是什么?这篇文章主要以这三个问题来谈一谈。 ...
分类:
其他好文 时间:
2019-02-08 19:52:45
阅读次数:
194