python之单线程、多线程、多进程
一、基本概念
进程(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())
查看执行结果-读写并发

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了