zoukankan      html  css  js  c++  java
  • 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密集型的,选择多线程,线程开销小
    守护线程和守护进程的区别

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


  • 相关阅读:
    1042 Shuffling Machine
    1043 Is It a Binary Search Tree
    1044 Shopping in Mars
    1443. Minimum Time to Collect All Apples in a Tree
    1045 Favorite Color Stripe
    Java笔记八:Java内置的包装类(1)
    Java笔记七:Java数字和日期处理(2)
    Java笔记六:Java数字和日期处理(1)
    Java笔记五: Java正则表达式
    Java笔记四:Java字符串处理
  • 原文地址:https://www.cnblogs.com/lilyxiaoyy/p/11026015.html
Copyright © 2011-2022 走看看