1.GIL与线程调度
Python中的线程是操作系统的原生线程,Python虚拟机使用一个全局解释器锁(Global Interpreter Lock)来互斥线程对Python虚拟机的使用
为了支持多线程机制,一个基本的要求就是需要实现不同线程对共享资源访问的互斥,所以引入了GIL。
GIL:在一个线程拥有了解释器的访问权之后,其他的所有线程都必须等待它释放解释器的访问权,即使这些线程的下一条指令并不会互相影响。
在调用任何Python C API之前,要先获得GIL
GIL缺点:多处理器退化为单处理器;优...
分类:
编程语言 时间:
2014-06-25 19:48:52
阅读次数:
358
1、thread模块 2、threading模块 3、Queue模块与多线程互斥 简介: thread和threading模块允许创建和管理线程,thread模块提供了基本的线程和锁的支持,而threading提供了更高级别,功能更强的线程管理功能,Queue模块 允许创建一个可以用于多个线程之间共...
分类:
编程语言 时间:
2014-06-25 13:39:51
阅读次数:
244
注:此文除了例子和使用心得是自己写的,很多都是Python核心编程中的原文。原文文风应该能看出来,就不每个地方单独表明出处了。
线程(有时被称为轻量级进程)跟进程有些相似,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境。它们可以想像成是在主进程或”主线程”中并行运行的“迷你进程”。
线程有开始,顺序执行和结束三部分。它有一个自己的指令指针,记录自己运行到什么地方。线程的运行可能被抢...
分类:
编程语言 时间:
2014-06-21 22:34:11
阅读次数:
346
Python的多线程有两种实现方法:
函数,线程类
1.函数:调用thread模块中的start_new_thread()函数来创建线程,以线程函数的形式告诉线程该做什么
2.线程类:调用threading模块,创建threading.Thread的子类来得到自定义线程类。
def f(name):
#定义线程函数
print "this is " + name...
分类:
编程语言 时间:
2014-06-20 12:05:41
阅读次数:
287
总结下python中线程调度机制.
对于线程调度机制而言,同操作系统的进程调度一样,最关键是要解决两个问题:
1.在何时选择挂起当前线程,并选择处于等待的先一个线程呢?
2.在众多等待的线程中,选择哪一个作为激活线程呢?
在python多线程机制中,这个两个问题是有两个层次解决的。
如,进程间的切换,当发生了时钟中断,操作系统响应时钟中断,并在这个时候开始进程的调...
分类:
编程语言 时间:
2014-06-05 10:07:35
阅读次数:
314
原文
运行几个线程和同时运行几个不同的程序类似,它有以下好处:
一个进程内的多个线程和主线程分享相同的数据空间,比分开不同的过程更容易分享信息或者彼此通信。
线程有时叫做轻量化过程,而且他们不要求更多的内存开支;它们比过程便宜。
一个线程的顺序是:启动,执行和停止。有一个指令指针跟踪线程正在运行的上下文在哪里。
它可以被抢占(中断)
它能暂时被挂起(也叫做休眠)...
分类:
编程语言 时间:
2014-05-21 08:05:20
阅读次数:
385
在单个程序中我们经常用多线程来处理不同的工作,尤其是有的工作需要等,那么我们会新建一个线程去等然后执行某些操作,当做完事后线程退出被回收。当一个程序运行时,就会有一个进程被系统所创建,同时也会有一个线程运行,这个线程就是主线程main,在主线程中所创建的新的线程都是子线程,子线程通常都是做一些辅助的事。python中提供了thread和threading两个模块来支持多线程。
p...
分类:
编程语言 时间:
2014-05-15 23:20:00
阅读次数:
471
#!/usr/bin/envpythonimportthreadingimporttimeimportparamikoimportos,sysfromipimportip_list,web_server,ip_msgfromoptparseimportOptionParserfromssh_co.cfg.configimporthost_msgdefopts():parser=OptionParser(usage="usage%progoptions")parser.add_option("-i","--it..
分类:
编程语言 时间:
2014-05-13 03:32:03
阅读次数:
537