一、一些概念
线程,顾名思义,就是一条流水线工作的过程(流水线的工作需要电源,电源就相当于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('主线程~')