摘要: 来自http://www.ruanyifeng.com/blog/2012/05/internet_protocol_suite_part_i.html我们每天使用互联网,你是否想过,它是如何实现的?全世界几十亿台电脑,连接在一起,两两通信。上海的某一块网卡送出信号,洛杉矶的另一块网卡居然就收到了,... 阅读全文
posted @ 2015-04-22 19:31 zhek 阅读(142) 评论(0) 推荐(0) 编辑
摘要: super 是用来解决多重继承问题的,直接用类名调用父类方法在使用单继承的时候没问题,但是如果使用多继承,会涉及到查找顺序(MRO)、重复调用(钻石继承)等种种问题。总之前人留下的经验就是:保持一致性。要不全部用类名调用父类,要不就全部用 super,不要一半一半。如果没有复杂的继承结构,super... 阅读全文
posted @ 2015-04-19 21:18 zhek 阅读(143) 评论(0) 推荐(0) 编辑
摘要: 前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量同步机制解决了生产者与消费者问题。让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。Python的Queue模块中提供了同步的、线程安全的队列类... 阅读全文
posted @ 2015-04-17 20:26 zhek 阅读(2493) 评论(0) 推荐(0) 编辑
摘要: 互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持。Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方法。线程首先acquire一个条件变量,然后判断一些条件。如果条件不满... 阅读全文
posted @ 2015-04-17 20:16 zhek 阅读(326) 评论(0) 推荐(0) 编辑
摘要: 死锁在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子:按 Ctrl+C 复制代码按 Ctrl+C 复制代码执行结果:Thread-1 got resAThread-1 got re... 阅读全文
posted @ 2015-04-17 19:27 zhek 阅读(447) 评论(0) 推荐(0) 编辑
摘要: 上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码:# encoding: UTF-8import threadingimport timeclass MyT... 阅读全文
posted @ 2015-04-17 19:10 zhek 阅读(2407) 评论(0) 推荐(0) 编辑
摘要: 虚拟机层面Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势。语言层面在语言层面,Python对多线程提供了很好的支持,Python中多线程相关的模块包括:thread,threading,Queue。可... 阅读全文
posted @ 2015-04-17 19:00 zhek 阅读(395) 评论(0) 推荐(0) 编辑
摘要: 看廖雪峰的多线程多进程教程看的云里雾里的,google了一下,贴上来点重点。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间。多任务操作系统可以“并发”执行这些进程。线程是指进程中乱序、多次执行的代码块,多个线程可以“同时”运行,所以认为多个线程是“并发”的。 多线程vs多进程操... 阅读全文
posted @ 2015-04-17 18:44 zhek 阅读(429) 评论(0) 推荐(0) 编辑
摘要: Python中的random模块用于生成随机数。下面介绍一下random模块中最常用的几个函数。random.randomrandom.random()用于生成一个0到1的随机符点数: 0 b,则生成的随机数n:b <= n <= a。如果 a <b, 则a <= n <= b。[python]v... 阅读全文
posted @ 2015-04-16 20:30 zhek 阅读(221) 评论(0) 推荐(0) 编辑
摘要: TimeTime access and conversions(时间使用和转换) 在平常的代码中,我们常常需要与时间打交道。在Python中,与时间处理有关的模块就包括:time,datetime以及calendar。这篇文章,主要讲解time模块。在开始之前,首先要说明这几点:在Python... 阅读全文
posted @ 2015-04-16 20:16 zhek 阅读(742) 评论(0) 推荐(0) 编辑