专栏首页python百例103-多进程的效率

103-多进程的效率

没有多进程,即使CPU有多个核心,程序只是运行在一个核心上,无法利用多进程提升效率。5000万次加法,如果需要2.5秒,调用两次共花费5秒。

import time

def calc():
    result = 0
    for i in range(1, 50000001):
        result += i
    print(result)

if __name__ == '__main__':
    start = time.time()
    calc()
    calc()
    end = time.time()
    print(end - start)

通过多进程,程序运行在多个核心上,同样的调用两次5000万次加法运算,时间仅为一半。

import time
import os

def calc():
    result = 0
    for i in range(1, 50000001):
        result += i
    print(result)

if __name__ == '__main__':
    start = time.time()
    for i in range(2):
        pid = os.fork()
        if not pid:
            calc()
            exit()
    os.waitpid(-1, 0)  # 挂起父进程,直到子进程结束才继续向下执行
    os.waitpid(-1, 0)  # 每个waitpid只能处理一个僵尸进程,两个子进程需要调用两次
    end = time.time()
    print(end - start)

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

我来说两句

0 条评论
登录 后参与评论

相关文章

  • 55-计算千万次加法运算时间

    凯茜的老爸
  • 108-多线程的效率

    python的多线程有一个GIL(全局解释器锁),使得多个线程,某一时刻只有一个线程发送给CPU处理。所以多线程不适用计算密集型应用,更适合IO密集型应用。 ...

    凯茜的老爸
  • 56-时间相关模块常用方法

    凯茜的老爸
  • 进阶的运维开发(一)- 装饰器

    函数在python中作为一级对象,可以被当作参数传递,也可以作为函数返回,而装饰器就是利用这一特点,装饰器首先肯定是一个高阶函数,本质即是接受函数作为参数,返回...

    奔跑的骆驼
  • python获取文件修改时间与创建时间

    转载自:  http://blog.csdn.net/liyuan_669/article/details/25347037

    py3study
  • [spark streaming] 动态生成 Job 并提交执行

    Spark Streaming Job的生成是通过JobGenerator每隔 batchDuration 长时间动态生成的,每个batch 对应提交一个Job...

    UFO
  • APT15组织研究白皮书

    Ke3chang组织也被称为APT15,该组织的攻击行为于2012年第一次被曝光,该组织当时利用远程后门攻击全世界的高价值目标。该组织活动最早可以追溯到2010...

    FB客服
  • 互联网造车再现手机抢滩?有人押注AI,有人押注GDP

    允中 发自 埃蒙端沃 量子位 报道 | 公众号 QbitAI 上周有两个事情,一南一北,都和互联网造车相关。 一个是生态化反不太顺利的乐视。在新晋大股东融创中国...

    量子位
  • python i18n实现

    songleo
  • Openstack Ocata初体验

    Openstack社区刚刚release了Ocata版,最大的改进之一是更加全面拥抱容器,不管是Openstack的各个组件以容器,微服务的形式部署,还是对容器...

    后端云

扫码关注云+社区

领取腾讯云代金券