一、基本概念
进程(Process) 是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。 在当代面向线程设计的计算机结构中,进程是线程的容器。程序是指令、数据及其组织形式的描述,进程是程序的实体。是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础。程序是指令、数据及其组织形式的描述,进程是程序的实体。
线程(thread) 是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。
简单总结:
进程:指在系统中正在运行的一个应用程序;程序一旦运行就是进程;进程——资源分配的最小单位。
线程:系统分配处理器时间资源的基本单元,或者说进程之内独立执行的一个单元执行流。线程——程序执行的最小单位。
二、 单线程
程序执行时,所走的程序路劲按照联连续顺序排下去,前面的处理完后,后面的才会执行
举个栗子
#单线程
1 from time import sleep,ctime 2 def talk(): 3 print("stark talk %r" %ctime()) 4 sleep(2) 5 def write(): 6 print("stark write %r" %ctime()) 7 sleep(3) 8 talk() 9 write() 10 print("all and! at %r" %ctime())
查看结果-顺序执行
三、多线程
1 from time import sleep,ctime 2 import threading 3 4 def talk(content,loop): 5 for i in range(loop): 6 print("stark talk %s %s" %(content,ctime())) 7 sleep(3) 8 9 def write(content,loop): 10 for i in range(loop): 11 print("stark write %s %s" %(content,ctime())) 12 sleep(5) 13 #定义和加载说和写的线程 14 threads=[] 15 t1=threading.Thread(target=talk,args=('hello world',2)) 16 threads.append(t1) 17 t2=threading.Thread(target=write,args=('life is short you need python',2)) 18 threads.append(t2) 19 #执行多线程 20 for t in threads: 21 t.start() 22 for t in threads: 23 #线程守护 24 t.join() 25 print("all threads end! at %r" %ctime())
查看执行结果-读写并发
四、多进程
1 from time import sleep,ctime 2 import multiprocessing 3 4 def talk(content,loop): 5 for i in range(loop): 6 print("stark talk %s %s" %(content,ctime())) 7 sleep(2) 8 9 def write(content,loop): 10 for i in range(loop): 11 print("stark write %s %s" %(content,ctime())) 12 sleep(3) 13 #定义和加载说和写的进程 14 process=[] 15 p1=multiprocessing.Process(target=talk,args=('hello world',2)) 16 process.append(p1) 17 p2=multiprocessing.Process(target=write,args=('life is short you need python',2)) 18 process.append(p2) 19 #调用进程 20 if __name__=='__main__': 21 for t in process: 22 t.start() 23 for t in process: 24 #进程守护 25 t.join() 26 print("all process end! at %r" %ctime())
查看执行结果-读写并发