1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > Python——进程 线程 协程 多进程 队列 多线程(个人向)

Python——进程 线程 协程 多进程 队列 多线程(个人向)

时间:2022-02-03 22:58:57

相关推荐

Python——进程 线程 协程 多进程 队列 多线程(个人向)

一、进程 线程 协程

1.进程

一个运行的程序就是一个进程,没有运行的代码叫做程序。进程是系统分配资源的最小单位,进程拥有自己独立的内存空间 相对独立,所以进程间的数据不共享,开销大。

2.线程

CPU调度执行的最小单元(程序真正执行的时候调用的是线程),也叫执行路径,依赖于进程存在,一个进程最少存在一个线程,叫做主线程而多个线程共享进程内存资源(数据共享,共享全局变量),从而极大地提高了程序的运行效率。

一个进程中可以有一个或多个线程。一个线程只属于一个进程。

一个进程中的多个线程是一种竞争关系。

3.协程

协程类似于线程,基于线程,但是协程允许一个执行过程A中断,转而执行过程B,然后再执行过程A

优势:

协程理论上数量有无限个, 没有线程之间的切换动作,所以比较快;

没有锁机制, 因为所有协程都在一个线程中.

是一种用户态的轻量级线程,协程的调度完全由用户控制。协程拥有自己的寄存器上下文和栈。 协程调度切换时,将寄存器上下文和栈保存到其他地方,在切回来的时候,恢复先前保存的寄存器上下文和栈,直接操作栈则基本没有内核切换的开销,可以不加锁的访问全局变量,所以上下文的切换非常快。

二、多进程 多线程

1.多进程

(并行:两个人每个人同时处理一个任务)

多进程模块:multiprocessing ,CPU密集型、IO计算型可以使用多进程

模块导入:from multiprocessing import Process

Process创建进程

Process([group [, target [, name [, args [, kwargs]]]]])

常用方法:

一个进程的,生命周期中的几种状态:

出生:

就绪:start()

执行:

阻塞:sleep() / IO操作

死亡:正常结束 / 异常结束

import timefrom multiprocessing import Processdef download1(name):for i in range(1, 6):print(f{name}下载进度:{i * 20}%)time.sleep(1)def download2(name):for i in range(1, 6):print(f{name}下载进度:{i * 20}%)time.sleep(1)if __name__

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。