python多进程与多线程

1、概念
  进程(Process)是计算机中的程序关于某数据集合上的一次运行活动;
  线程(thread)是操作系统能够进行运算调度的最小单位。它被包含在进程之中,是进程中的实际运作单位。一条线程指的是进程中一个单一顺序的控制流,一个进程中可以并发多个线程,每条线程并行执行不同的任务。在Unix System V及SunOS中也被称为轻量进程(lightweight processes),但轻量进程更多指内核线程(kernel thread),而把用户线程(user thread)称为线程。
2、使用

  1. 多进程
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多线程运行变慢, 因而需要的时间比正常单核执行的时间还要长,但多线程处理能够提高并发度。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值