标签:
进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程。进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进程里的所有资源,进程之间则是独立的)。
直观的说,进程就是正在执行的程序(python中每一个.py文件都可以看作是一个进程),是多任务操作系统中的基本单元,是包含了程序指令和相关资源的集合。
操作系统隔绝了每个进程可以访问的地址空间,如果进程间想要传递信息,可使用进程间通信或者文件、数据库等方法。 (windows 下进程之间的通信 http://www.360doc.com/content/14/0802/18/3218170_398864589.shtml)
在进程中的调度中,进程之间的切换需要的时间是很多的,为了更好地利用资源共享和节省开销,从进程中演化出了线程这个概念。
线程是进程的执行单元,对于大部分程序,只有一个主线程,为了提高效率,有些程序会使用多线程,在系统中所有的线程看起来是同时执行的。
在python中,如果是I/O密集型任务可使用多线程,若是运算密集型任务则不推荐使用多线程,(最好的方法是直接用c语言编写)
全局解释器锁(Global Interpreter Lock),是计算机程序设计语言解释器(只有cpython解释器中有)用于同步线程的工具,使得任何时刻仅有一个线程在执行,Python的线程是操作系统的原生线程。
在Linux上为pthread,在Windows上为Win thread,完全由操作系统调度线程的执行。一个python解释器进程内有一条主线程,以及多条用户程序的执行线程。即使在多核CPU
平台上,由于GIL的存在,所以禁止多线程的并行执行。
文件执行顺序
创建一个简单的线程
import threading from time import ctime,sleep def music(func): print("start....%s----%s"%(func,ctime())) sleep(4) print("end.....%s----%s"%(func,ctime())) def move(func): print("start.....%s----%s"%(func,ctime())) sleep(8) print("end......%s----%s"%(func,ctime())) t1 = threading.Thread(target=music,args=("音乐",)) t2 = threading.Thread(target=move,args=("电影",)) if __name__ =="__main__": t1.start() t2.start() print("aaaaaaaaaaaaaaa%s"%ctime()) ‘‘‘ 执行结果: start....音乐----Thu Sep 29 15:56:47 2016 start.....电影----Thu Sep 29 15:56:47 2016 aaaaaaaaaaaaaaaThu Sep 29 15:56:47 2016 end.....音乐----Thu Sep 29 15:56:51 2016 end......电影----Thu Sep 29 15:56:55 2016 ‘‘‘
标签:
原文地址:http://www.cnblogs.com/lst1010/p/5920976.html