码迷,mamicode.com
首页 > 编程语言 > 详细

python学习笔记12 ----线程、进程

时间:2016-09-29 21:40:06      阅读:194      评论:0      收藏:0      [点我收藏+]

标签:

进程和线程的概念

  进程和线程是操作系统中两个很重要的概念,对于一般的程序,可能有若干个进程,每一个进程有若干个同时执行的线程。进程是资源管理的最小单位,线程是程序执行的最小单位(线程可共享同一进程里的所有资源,进程之间则是独立的)。

进程(progress)

  直观的说,进程就是正在执行的程序(python中每一个.py文件都可以看作是一个进程),是多任务操作系统中的基本单元,是包含了程序指令和相关资源的集合。

  操作系统隔绝了每个进程可以访问的地址空间,如果进程间想要传递信息,可使用进程间通信或者文件、数据库等方法。      (windows 下进程之间的通信   http://www.360doc.com/content/14/0802/18/3218170_398864589.shtml

  在进程中的调度中,进程之间的切换需要的时间是很多的,为了更好地利用资源共享和节省开销,从进程中演化出了线程这个概念。

线程(threading)

  线程是进程的执行单元,对于大部分程序,只有一个主线程,为了提高效率,有些程序会使用多线程,在系统中所有的线程看起来是同时执行的。

  在python中,如果是I/O密集型任务可使用多线程,若是运算密集型任务则不推荐使用多线程,(最好的方法是直接用c语言编写)

GIL

  全局解释器锁(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
‘‘‘    
简单的线程程序

 

python学习笔记12 ----线程、进程

标签:

原文地址:http://www.cnblogs.com/lst1010/p/5920976.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!