zoukankan      html  css  js  c++  java
  • 《Python核心编程》 18.多线程编程(一)

    一进程和线程

    1参考链接:

    http://www.zhihu.com/question/25532384OF小工zhonyong 的回答

    总结他们两的回答:

    引言:

    1.电脑的运行,在硬件上是CPU、相关寄存器、RAM之间的事情。负责处理任务的顺序有CPU决定。

    2.程序的上下文:当CPU处理任务时,所需要的各种资源(显卡、寄存器等)准备完毕,构成了这个程序的执行环境,即上下文。

    3.CPU处理任务顺序:先加载程序A的上下文,然后开始执行A,保存程序A的上下文,调入下一个要执行的程序B的程序上下文,然后开始执行B,保存程序B的上下文。

    总结:

    进程:包换上下文切换的程序执行时间总和 = CPU加载上下文+CPU执行+CPU保存上下文

    线程:CPU执行程序时所划分的各个‘迷你进程’,共享上下文环境。

     

    2本书描述

    进程(重量级进程):是程序的一次执行。

    每个进程都有自己的地址空间、内存、数据栈及其他记录其运行轨迹的辅助数据。操作系统管理(这里应该是是指CPU)在其上运行的所有进程,并为这些进程公平的分配时间。

    各个进程都有自己的内存空间、数据栈等,所以只能使用进程间通讯(iterprocess communication,IPC),而不能直接共享信息。

     

    线程(轻量级进程):类似于进程,不同的是,所有的线程运行在同一个进程中,共享相同的运行环境(同一片数据空间)。故这种并行和数据共享机制是多任务合作变为可能。

    线程分为开始、顺序执行和结束三部分。有自己的指令指针,记录自己运行到什么地方。

    线程的运行可能被抢占(中断),或暂时挂起(也叫作睡眠),让其他的线程运行,这叫做让步。

    在单CPU系统中,不可能真正并行运行多线程。每个线程被安排成每次只运行一小会,然后把CPU让出来,让其他线程去运行。

    在进程的整个运行过程中,每个线程都只做自己的事,在需要的时候跟其他的线程共享运行的结果。

    二 Python、全局解锁器器(GIL)

    在Python中,代码由Python虚拟机(也叫解释器主循环)来控制。

    Python解释器中,可以存放多个线程,但任意时刻,只有一个线程在运行。

    Python解释器由全局解释器锁(global interpreter lock,GIL)来控制。在多线程环境中,Python解释器按以下方式执行:

    1.设置GIL

    2.切换到一个线程中去运行

    3.运行:

         a.指定数量的字节码的指令,或

         b.线程主动让出控制(调用time.sleep(n))

    4.把线程设置为睡眠状态。

    5.解锁GIL。

    6.重复以上步骤。

    三Python中关于线程模块的介绍

    thread模块:提供了基本的线程和锁的支持。(OF小工的回答中有关于锁的形象介绍)

    threading模块:提供了更高级别、功能更强的的线程管理功能。

    Queue(队列)模块:运行用户创建一个可以用于多个线程之间共享数据的队列数据结构。

    三不推荐使用thread模块原因

    1.thread模块中的属性可能会与threading出现冲突。

    2.thread模块的同步原语(关于线程的函数?)很少。

    3.对进程结束时间没有控制(要使用锁)。

    4.不支持守护线程

  • 相关阅读:
    在C#代码中应用Log4Net(二)典型的使用方式
    在C#代码中应用Log4Net(一)简单使用Log4Net
    Windows Azure Active Directory (2) Windows Azure AD基础
    Windows Azure Virtual Network (6) 设置Azure Virtual Machine固定公网IP (Virtual IP Address, VIP) (1)
    Windows Azure Active Directory (1) 前言
    Azure China (6) SAP 应用在华登陆 Windows Azure 公有云
    Microsoft Azure News(3) Azure新的基本实例上线 (Basic Virtual Machine)
    Microsoft Azure News(2) 在Microsoft Azure上运行SAP应用程序
    Microsoft Azure News(1) 新的数据中心Japan East, Japan West and Brazil South
    Windows Azure HandBook (2) Azure China提供的服务
  • 原文地址:https://www.cnblogs.com/twtp/p/5485483.html
Copyright © 2011-2022 走看看