一、一些概念

  线程,顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于cpu),而一条流水线必须属于一个车间,一个车间的工作过程是一个进程,车间负责把资源整合到一起,是一个资源单位,而一个车间内至少有一条流水线。

  多线程(即多个控制线程)的概念是,在一个进程中存在多个线程,多个线程共享该进程的地址空间,相当于一个车间内有多条流水线,都共用一个车间的资源。例如,北京地铁与上海地铁是不同的进程,而北京地铁里的13号线是一个线程,北京地铁所有的线路共享北京地铁所有的资源,比如所有的乘客可以被所有线路拉。

  那么,为什么要开线程呢?当我们需要多个程序同时运行,但是还需要数据共享——开进程的话能保证第一点但是数据不能共享,所以要用同一个进程下的多个线程。

  所以说,进程只是用来把资源集中到一起(进程只是一个资源单位,或者说资源集合),而线程才是cpu上的执行单位。光开进程不能工作,需要进程里开线程才能正常工作,当一个进程开启时,对应的一个线程会随着同时开启个进程可以开启多个线程————一个进程内的多个线程是共享数据的开进程的开销远远比开进程的开销大,因为开进程得申请空间,开线程是基于开好的空间进行的

  二、开启线程的两种方式

  2.1 利用threading模块下的Thread类:

# -*- coding: utf-8  -*-
# -*- Author: WangHW -*-
from threading import Thread
import time
import os

def work(name):
    print('%s is running...id:%s'%(name,os.getpid()))
    time.sleep(1)
    print('%s is done...'%os.getpid())


if __name__ == '__main__':
    w = Thread(target=work,args=('whw',))
    #开启线程开始start方法
    w.start()
    #主进程开启是默认开启了主线程,进程要想执行必须要有一个线程
    #现在有一个进程两个线程
    #执行角度看这是主线程,资源角度讲是主进程
    print('主线程~')
View Code

相关文章: