• PythonStudy——多线程与多进程 对比


    IO密集型任务 子进程解决方案

    # test1 IO密集型任务 (法1:开启子进程的解决)
    from multiprocessing import Process
    import time
    
    def task():
        time.sleep(2)
    
    if __name__ == '__main__':
        start = time.time()
        lst = []
        # 用于开启100个子进程
        for i in range(100):
            p = Process(target=task)
            p.start()
            # 将p子进程对象存入列表中,此时列表作为一个容器接受所有实例化出来的对象
            lst.append(p)
        for p in lst:
            p.join()
        end = time.time()
        print(end-start)  

    # 耗时 2.1534228324890137

     IO密集型任务任务 子线程解决方案

    from threading import Thread
    import time
    
    def task():
        time.sleep(2)
    
    if __name__ == '__main__':
        start = time.time()
        lst = []
        # 用于开启100个子进程
        for i in range(100):
            p = Thread(target=task)
            p.start()
            # 将p子进程对象存入列表中,此时列表作为一个容器接受所有实例化出来的对象
            lst.append(p)
        for p in lst:
            p.join()
        end = time.time()
        print(end-start)  

    # 耗时 2.0103108882904053

     计算密集型任务 子进程解决方案

    from multiprocessing import Process
    import time
    def task():
        for i in range(100000):
            i * i
    if __name__ == '__main__':
        start = time.time()
        lst = []
        for i in range(5):
            p = Process(target=task)
            p.start()
            lst.append(p)
        for p in lst:
            p.join()
        end = time.time()
        print(end - start)  

    # 耗时 1.9584298133850098

    计算密集型任务 子线程解决方案

    from multiprocessing import Process
    import time
    def task():
        for i in range(100000):
            print(i * i)
    if __name__ == '__main__':
        start = time.time()
        lst = []
        for i in range(5):
            p = Process(target=task)
            p.start()
            lst.append(p)
        for p in lst:
            p.join()
        end = time.time()
        print(end - start)  # 耗时 1.8708198070526123

    总结:

    对于io密集型 建议使用多线程

    对于计算密集型 建议使用多进程

  • 相关阅读:
    CF1537C Challenging Cliffs
    CF1454E Number of Simple Paths
    六、链表
    AOP中的一些概念
    Autowired查找顺序
    webpack配置babel
    selenium处理iframe下 #document 标签
    Soul 网关 Nacos 数据同步源码解析
    安装ssl证书后,部分浏览器提示你的链接不安全,服务器应使用tls1.2或更高版本
    php 安装 imagick扩展失败 ,phpinfo一直不显示
  • 原文地址:https://www.cnblogs.com/tingguoguoyo/p/10980860.html
Copyright © 2020-2023  润新知