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