上一页 1 2 3 4 5 6 7 8 ··· 11 下一页
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html前面介绍了互斥锁和条件变量解决线程间的同步问题,并使用条件变量同步机制解决了生产者与消费者问题。让我们考虑更复杂的一种场景:产品是各不相同的。这时只记录一个数量就不够了,还需要记录每个产品的细节。很容易想到需要用一个容器将这些产品记录下来。Python的Queue模块中提供了同步的、线程安全的队列类,包括FIFO(先入先出)队列Queue,LIFO(后入先出)队列LifoQueue,和优先级队列PriorityQueue。这些队列都实现了锁 阅读全文
posted @ 2012-04-19 10:48 TsengYuen 阅读(335) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html很多时候,线程之间会有互相通信的需要。常见的情形是次要线程为主要线程执行特定的任务,在执行过程中需要不断报告执行的进度情况。前面的条件变量同步已经涉及到了线程间的通信(threading.Condition的notify方法)。更通用的方式是使用threading.Event对象。threading.Event可以使一个线程等待其他线程的通知。其内置了一个标志,初始值为False。线程通过wait()方法进入等待状态,直到另一个线程调用se 阅读全文
posted @ 2012-04-19 10:48 TsengYuen 阅读(270) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html互斥锁是最简单的线程同步机制,Python提供的Condition对象提供了对复杂线程同步问题的支持。Condition被称为条件变量,除了提供与Lock类似的acquire和release方法外,还提供了wait和notify方法。线程首先acquire一个条件变量,然后判断一些条件。如果条件不满足则wait;如果条件满足,进行一些处理改变条件后,通过notify方法通知其他线程,其他处于wait状态的线程接到通知后会重新判断条件。不断的 阅读全文
posted @ 2012-04-19 10:47 TsengYuen 阅读(278) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html死锁在线程间共享多个资源的时候,如果两个线程分别占有一部分资源并且同时等待对方的资源,就会造成死锁。尽管死锁很少发生,但一旦发生就会造成应用的停止响应。下面看一个死锁的例子:# encoding: UTF-8import threadingimport timeclass MyThread(threading.Thread): def do1(self): global resA, resB if mute... 阅读全文
posted @ 2012-04-19 10:46 TsengYuen 阅读(247) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html问题的提出上一节的例子中,每个线程互相独立,相互之间没有任何关系。现在假设这样一个例子:有一个全局的计数num,每个线程获取这个全局的计数,根据num进行一些处理,然后将num加1。很容易写出这样的代码:# encoding: UTF-8import threadingimport timeclass MyThread(threading.Thread): def run(self): global num ... 阅读全文
posted @ 2012-04-19 10:45 TsengYuen 阅读(306) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html如上一节,python的threading.Thread类有一个run方法,用于定义线程的功能函数,可以在自己的线程类中覆盖该方法。而创建自己的线程实例后,通过Thread类的start方法,可以启动该线程,交给python虚拟机进行调度,当该线程获得执行的机会时,就会调用run方法执行线程。让我们开始第一个例子:# encoding: UTF-8import threadingimport timeclass MyThread(threa 阅读全文
posted @ 2012-04-19 10:44 TsengYuen 阅读(406) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html前面介绍过多线程的基本概念,理解了这些基本概念,掌握python多线程编程就比较容易了。在开始之前,首先要了解一下python对多线程的支持。虚拟机层面Python虚拟机使用GIL(Global Interpreter Lock,全局解释器锁)来互斥线程对共享资源的访问,暂时无法利用多处理器的优势。语言层面在语言层面,Python对多线程提供了很好的支持,Python中多线程相关的模块包括:thread,threading,Queue。可以 阅读全文
posted @ 2012-04-19 10:44 TsengYuen 阅读(372) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html多线程编程必须理解的一些基本概念,适用于所有编程语言。内容:并发式编程多任务操作系统多线程vs多进程线程安全线程的生命周期线程的类型并发式编程不同的编程范式对软件有不同的视角。并发式编程将软件看做任务和资源的组合——任务之间竞争和共享资源,当资源满足时执行任务,否则等待资源。并发式编程使得软件易于理解和重用,在某些场景能够极大提高性能。多任务操作系统要实现并发,首先需要操作系统的支持。现在的操作系统大部分都是多任务操作系统,可以“同时”执行 阅读全文
posted @ 2012-04-19 10:23 TsengYuen 阅读(285) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html每个真正的程序员,可能都会梦想着能够发布开源项目,让自己的代码被别人所用。开源项目会发布到开发的版本管理系统(比如GitHub)上面,为了让大家能够方便使用你的代码,项目的目录结构应该遵循一定的规范。即使不是开源项目,项目目录结构符合一定的规范对你的项目管理也是有好处的。下面列出python开源项目的通常目录结构及说明:.tx/ 如果你使用Transifex进行国际化的翻译工作,创建此目录 con... 阅读全文
posted @ 2012-04-19 10:18 TsengYuen 阅读(628) 评论(0) 推荐(0) 编辑
摘要: 【转自】昵称:Holbrookhttp://www.cnblogs.com/holbrook/archive/2012/02/25/2368231.html在python开源项目目录结构的基础上,进一步定义django的目录结构。根据django的特性,分成两部分:project结构和app结构。project结构这里定义的是python开源项目目录结构中的$PROJ_NAME目录内的内容,需要与python开源项目目录结构结合起来。PROJ_NAME/ __init__.py 这几个文件是django创建project所必须的,不做过多说明 manage.py ... 阅读全文
posted @ 2012-04-19 10:15 TsengYuen 阅读(1560) 评论(0) 推荐(0) 编辑
上一页 1 2 3 4 5 6 7 8 ··· 11 下一页