【python】多任务之进程、线程、协程


0.线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0.1 查看正在运行的线程

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0.2 继承Thread类完成创建线程

在这里插入图片描述
多线程共享全局变量,+=改变了地址,所以要用global
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
如下test2没有append,共享的test1
在这里插入图片描述
在这里插入图片描述

0.3 多线程共享全局变量的问题–资源竞争

在这里插入图片描述
在这里插入图片描述
如下一个线程没执行完3步就切换到另一个线程,非原子性
在这里插入图片描述

0.4 互斥锁解决资源竞争

多线程解决并发问题。多线程有个问题:全局变量。互斥锁解决全局变量问题
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0.5 死锁,银行家算法

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

0.6 多线程udp聊天器

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.进程

程序是没有运行的,运行起来就是进程(进程可让操作系统调度资源,一个程序可产生多个进程)
进程:资源分配的单位,先有并互相独立费资源,通socket、文件、队列(内存)通信。
线程:操作系统调度单位,共享全局变量。
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面是.Processing不是.Thread
在这里插入图片描述
在这里插入图片描述

1.1 通过队列完成进程间通信

在这里插入图片描述
在这里插入图片描述
队列可解耦(耦合性:程序间依赖性)
在这里插入图片描述
下面这个q只能在同一程序里多个进程且同一个电脑,redis可以消息队列,分布式(多台电脑)
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.2 进程池Pool

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

1.3 多任务文件夹copy

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
下面为改进版显示进度:主进程来显示,主进程和进程池里进程通过队列通信
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

2.协程

2.1 gevent实现图片下载器

在这里插入图片描述
在这里插入图片描述

发布了79 篇原创文章 · 获赞 108 · 访问量 2万+

猜你喜欢

转载自blog.csdn.net/weixin_43435675/article/details/104053474
今日推荐