编程语言
文章平均质量分 78
half-beast
关注全栈,喜欢寻根究底
展开
-
线程和协程之间的区别
线程和协程之间的区别很大,甚至大过进程和线程之间的区别。线程建立在进程之上,协程建立在线程之上。那么协程是什么呢? 协程是一段计算机程序,它一般是一个协作类型的子程序,执行时允许暂停和恢复。协程非常适合实现熟知的程序,例如协作任务,异常,事件循环,迭代器,无限列表和管道。 协程与我们熟知的函数不同(函数也是一段计算机程序)。函数总是一个入口,一次返回,调用顺序明确,但是协程的调用可以中断,然后执行其它程序,在适当的时候再返回来继续执行,可以实现多次返回。 以异常为例。在操作系统中或者其它语言实现中,例原创 2021-01-13 17:58:05 · 1172 阅读 · 0 评论 -
Python多线程
在对称多处理器SMP时代,Python多线程技术显得有些弱鸡。因为GIL的存在,Python多线程只能实现单核多线程功能,无法实现多核多线程。虽然GIL显得有些自费武功,但是多线程技术在IO密集型应用中仍然能够提升一部分系统性能。所以还是有必要学习一些Python多线程编程。 线程是什么? 在Linux系统中,线程又名轻量级进程(LWP),是操作系统最小调度单位。这个命题,咋看起来没问题,细细评味总觉得有点不准确,会给人产生一种错觉,认为Linux中最小调度单位是线程。 在Linux2.6版本之原创 2021-01-08 22:29:51 · 128 阅读 · 0 评论 -
深入理解WSGI
WSGI(Web Server Gateway Interface)是Web服务器与Python Web应用或框架之间的建议标准接口,用于促进跨Web服务器的Web应用的可移植性。根据PEP 3333提案说明,WSGI只是一种协议,而不是一个框架。WSGI力求简洁和通用,所以共规范了三种组件:Application,Server和Middleware。 组件Application Application可以是一个函数、方法、类或者实现了call方法的示例。 如果是一个函数原创 2021-01-07 22:34:02 · 348 阅读 · 0 评论 -
内存克星--生成器
Python内置了很多非常有用的数据结构,比如列表(list)、集合(set)以及字典(dictionary)。这些数据结构方便了开发人员,特别是通过列表生成式,可以很方便的创建一个列表。但是,毕竟内存有限,列表的容量肯定会受到限制。当列表数据量大到我们开始担心系统内存空间时,就应该考虑使用生成器进行迭代了。 在Python中,生成器实际上是一个存在于堆上的函数。这个函数可以在循环过程中不断推算出后续的元素,直到产生特殊异常StopIteration结束。 如何创建一个生成器? 把列表生成式[]修原创 2021-01-06 14:16:08 · 127 阅读 · 0 评论 -
wait和notify实例
三个线程顺序打印ABC public class WaitAndNotify { public static void main(String[] args) throws InterruptedException { A a = new A(); C c = new C(); B b = new B(); b.setC(c); c.setA(a); a.setB(b原创 2015-05-18 23:46:48 · 530 阅读 · 0 评论