python多进程与多线程
2020-01-15 10:10
369 查看
1、概念
进程(Process)是计算机中的程序关于某数据集合上的一次运行活动;
线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2、使用
- 多进程
from multiprocessing import Process import os,time def work(times): i=0 for i in range(times): i+=1 if __name__ == "__main__": cpu_num=os.cpu_count() print('cpu个数:',cpu_num) l = [] start = time.time() for i in range(cpu_num): #用全部cpu同时计算,可到任务管理器看cpu利用率,接近100% p = Process(target=work,args=(100000000,)) #创建并运行子进程 p.start() l.append(p) for p in l: p.join() #等待所有子进程运行完 stop = time.time() print("运行时间:%s"%(stop - start)) ```![多进程运行时间](https://img-blog.csdnimg.cn/20191112212914569.png)![单进程运行时间](https://img-blog.csdnimg.cn/20191112213317715.PNG)
2. 多线程
from threading import Thread import os,time def work(times): res = 0 for i in range(times): res += i if __name__ == "__main__": cpu_num=os.cpu_count() print('cpu个数:',cpu_num) l = [] start = time.time() for i in range(cpu_num): #cpu利用率并未提升,因为多线程是并发执行的,非并行,即宏观上同时执行,微观上先后执行 p = Thread(target=work,args=(100000000,)) # 多线程 p.start() l.append(p) for p in l: p.join() stop = time.time() print("运行时间:%s"%(stop - start))
注意: 多线程运行所花的时间比单进程运行所花的时间还要长主要是因为python多线程需要用到GIL这个东西,它会获取和释放锁,具体解释可参考python多线程运行变慢, 因而需要的时间比正常单核执行的时间还要长,但多线程处理能够提高并发度。
- 点赞
- 收藏
- 分享
- 文章举报
相关文章推荐
- Python多线程多进程和线性执行的比较
- python 多进程,多线程
- Python3使用多进程和多线程的方式检查网络状态
- 第十五章 Python多进程与多线程
- 【Python】[进程和线程]多进程,多线程,ThreadLocal,进程VS.线程,分布式进程
- Python多线程与多进程
- Python 多进程、多线程效率比较
- python 多线程多进程
- python并发编程之多进程、多线程、异步和协程详解
- python并发编程之多进程、多线程、异步和协程详解
- Python中的多进程与多线程(一)
- Python多线程处理实例详解【单进程/多进程】
- python多线程/多进程/多进程multiprocessing包详解及应用(三)
- Python 多进程开发与多线程开发
- python(34):为什么在Python里推荐使用多进程而不是多线程?
- Python的多线程(threading)与多进程(multiprocessing )
- Python多线程与多进程
- Python多线程与多进程
- python多进程、多线程、协程向mysql插入10000条数据
- python多线程和多进程【1】GIL和RLock(递归锁)