摘要: 由于大多数程序不需要有多线程的能力,所以在Python启动的时候并不支持多线程。也就是说,Python中支持多线程所需要的数据结构特别是GIL并没有创建。当Python虚拟机启动的时候,多线程处理并没有打开,而仅仅支持单线程。只有当程序中使用了如thread.start_new_thread等方法的时候,python才知道需要有多线程处理的支持,此时,python虚拟机才会自动创建多线程处理所需要的数据结构与GIL。生成和终止线程(由于thread模块比较低级,不被推荐使用,所以就不说了)1 使用threading.Thread类(构造函数:Thread(group = None, targe 阅读全文
posted @ 2013-03-31 22:48 业精于勤荒于嬉 阅读(1504) 评论(0) 推荐(0) 编辑
摘要: 使用 subprocess 模块管理进程 上篇针对进程的创建和终止做了一些说明,但是,这些仅仅是基本的进程管理函数,无法满足复杂的需求。因此,Python提供了subporcess模块进程高级的进程管理。subprocess可以调用外部的系统命令创建新的子进程,同时连接到子进程的input/output/error管道上,并得到子进程的返回值。subprocess模块中提供了一个类和两个实用函数来管理进程,下面进行分别介绍1 使用Popen类管理进程 subprocess模块中高级进程的管理能力来自于Popen来的灵活使用,这源于该类中函数原型的丰富参数。class Popen(args,.. 阅读全文
posted @ 2013-03-31 17:14 业精于勤荒于嬉 阅读(583) 评论(0) 推荐(1) 编辑
摘要: 线程与进程的概念 对于一般程序而言,可能会有若干个进程,同时,每个进程又可能有多个同时执行的线程。进程是资源管理的最小单元,线程是程序执行的最小单元1 进程 直观来讲,进程就是正在执行的程序,是多任务操作系统执行任务的基本单元,是包含了程序指令与相关资源的集合。操作系统分隔各个进程可以访问的地址区域。如果进程间需要传递信息,可以使用进程间通信(IPC)或其他方式,如文件 数据库等。在进程调度中,进程切换需要的时间比较多。为了能够更好的支持信息共享和减小切换开销,从进程中演化出了线程。2 线程 线程是进程的执行单元。对于大多数程序来说,可能只有一个主线成,但是为了能够提高效率,有些程序会采... 阅读全文
posted @ 2013-03-31 15:30 业精于勤荒于嬉 阅读(1040) 评论(0) 推荐(1) 编辑