python 并发
2018-11-19 19:28:23 1591 举报
AI智能生成
Python并发是指在同一时间运行多个任务的能力。在Python中,可以使用多线程和多进程来实现并发。多线程是在一个进程中同时运行多个线程,每个线程独立执行任务,但共享内存资源。多进程则是在不同的进程中运行多个任务,每个进程拥有独立的内存空间,互不干扰。 使用Python并发可以提高程序的执行效率,充分利用计算机的资源。但是,并发也会带来一些问题,如数据竞争、死锁等。因此,在编写并发程序时,需要注意同步和互斥问题,确保程序的正确性和稳定性。
作者其他创作
大纲/内容
进程、线程
基本概念
进程是什么
- 一个进行的程序。比如我们运行一个游戏,打开一个软件,就是开启了一个进程。
- 进程拥有代码和打开的文件资源、数据资源、独立的内存空间。
- 一个主进程可以有多个子进程, 这多个子进程可以同时运行(如果机器的多核的)
线程是什么
- 线程从属于进程,是程序的实际执行者。一个进程至少包含一个主线程,也可以有更多的子线程。
- 因为有GIL 的存在,同一个进程的多个子线程,同时只能有一个线程在运行
进程、线程的区别
- 进程是CPU资源分配的基本单位,线程是独立运行和独立调度的基本单位(CPU上真正运行的是线程)。
- 进程拥有自己的资源空间,一个进程包含若干个线程,多个线程共享同一进程内的资源。
- 如果是CPU密集型的就用多进程,io密集型的可以用多线程
生命周期
实例对比性能
CPU密集型
multiprocess_use.py
thread_vs_nothread_compute.py
I/O密集型
thread_vs_nothread_io.py
进程池、线程池
池的基本概念
- 服务启动之初创建并初始化资源集合
- 有服务调用时直接从集合中取资源
- 使用完毕之后,不释放,直接放回集合中
池的优点
- 直接从池中取得所需资源比动态分配资源的速度要快得多
- 使用完之后,无需执行系统调用来释放资源,直接放回池中
进程池、线程池例子
线程
thread_pool_use.py
thread_pool_code.py
进程
multiprocess_pool_use.py
协程
基本概念
- 协程存在于线程当中,在一个线程中多个协程协调完成任务
- 协程是一种用户态的轻量级线程,协程的调度完全由用户控制
实际上代码
线程实现生产者、消费者
thread_queue.py
协程实现生产者、消费者
consumerProducer.py
优点
多协程之前不用锁
协程间切换成本比线程少很多
协程间切换成本比线程少很多
asyncio的使用
async_wget.py
协程实现server
socket_server_coroutines.py
socket_client.py
0 条评论
下一页