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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了python学习笔记12 ----线程进程相关的知识,希望对你有一定的参考价值。

进程和线程的概念

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

进程(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 ----线程进程的主要内容,如果未能解决你的问题,请参考以下文章

Python 学习笔记12字典

Python学习笔记__12.4章 struct

Python学习笔记__12.9章 urlib

Python学习笔记(12)装饰器

Python学习笔记__12.5章 hashlib

Python学习笔记__12.8章 contextlib