python3 计算密集型和IO密集型进程和线程的区别


# -*- coding: utf-8 -*-
import time
from multiprocessing import Process
from threading import Thread


def func():
    ret = 0
    for i in range(10000000):
        ret += i


if __name__ == '__main__':
    '''计算密集型'''
    start_time = time.time()
    p_lst = []
    for i in range(10):
        # p = Process(target=func)
        p = Thread(target=func)
        p_lst.append(p)
        p.start()
    [pp.join() for pp in p_lst]
    end_time = time.time()
    print("run time is :%s" % (end_time-start_time))


# run time is :3.555203437805176  # 多进程的运行时间,4个cpu同时处理
# run time is :9.960569858551025  # 多线程的运行时间,一个cpu去处理
# 多核计算密集型的,选择多进程,可以充分利用cpu

# -*- coding: utf-8 -*-
import time
from multiprocessing import Process
from threading import Thread


def func():
    time.sleep(1)


if __name__ == '__main__':
    '''IO密集型'''
    start_time = time.time()
    p_lst = []
    for i in range(10):
        # p = Process(target=func)
        p = Thread(target=func)
        p_lst.append(p)
        p.start()
    [pp.join() for pp in p_lst]
    end_time = time.time()
    print("run time is :%s" % (end_time-start_time))


# run time is :1.660094976425171  # 多进程的运行时间,4个cpu同时处理,因为进程比线程的开销大
# run time is :1.0020575523376465  # 多线程的运行时间,一个cpu去处理
# 多核IO密集型的,选择多线程,线程开销小

守护线程和守护进程的区别

  守护进程:随着主进程的代码执行结束,而结束
  守护线程:随着所有非守护线程的执行结束而结束


优质内容筛选与推荐>>
1、获取汇率的BAPI
2、Inspector's Dilemma(欧拉通路)
3、手把手教你移植一个麦语言策略(进阶)
4、C#: 获取当前路径不要用Environment.CurrentDirectory
5、bootstrap页面重置按钮,清除下拉框中的内容


长按二维码向我转账

受苹果公司新规定影响,微信 iOS 版的赞赏功能被关闭,可通过二维码转账支持公众号。

    阅读
    好看
    已推荐到看一看
    你的朋友可以在“发现”-“看一看”看到你认为好看的文章。
    已取消,“好看”想法已同步删除
    已推荐到看一看 和朋友分享想法
    最多200字,当前共 发送

    已发送

    朋友将在看一看看到

    确定
    分享你的想法...
    取消

    分享想法到看一看

    确定
    最多200字,当前共

    发送中

    网络异常,请稍后重试

    微信扫一扫
    关注该公众号





    联系我们

    欢迎来到TinyMind。

    关于TinyMind的内容或商务合作、网站建议,举报不良信息等均可联系我们。

    TinyMind客服邮箱:support@tinymind.net.cn