美文网首页
python进线程——多进程与多线程对比与介绍

python进线程——多进程与多线程对比与介绍

作者: TheRightPath1 | 来源:发表于2020-03-01 16:50 被阅读0次

    1. 多进程与多线程的区别

    进程与线程的区别在于二者的耗费CPU与耗费内存的资源不同,对于耗费CPU的比较多的操作使用多进程编程.对于IO操作比较密集的情况要使用多线程编程.因为进程切换的代价要高于线程.
    *注意: 在windows中使用多进程变编程的时候, 代码一定要写在if name=='main'中

    2. 多进程编程

    (1) 进程类: 进程使用multiprocessing包中的Process,他的使用方法与Thread基本相同
    (2)进程池: 进程池使用multiprocessing包中的Pool类, 它的第一个参数表示进程池中的线程数量,如果不指定参数会默认为CPU核数大小的进程数, 也可以通过multiprocessing.cpu_count()获取CPU的核心数

    代码示例

    import time
    import multiprocessing
    
    
    def test(seconds):
        time.sleep(seconds)
        print('sleep {} 秒'.format(seconds))
        return seconds
    
    
    if __name__ == '__main__':
        pool = multiprocessing.Pool(multiprocessing.cpu_count())
        # 使用apply_async方法往进程池中添加进程
        result = pool.apply_async(func=test, args=(1,))
        # 必须先将进程池close掉才能join
        pool.close()
        # 等待进程池中的进程运行完成
        pool.join()
        # 使用get方法获取运行结果
        print(result.get())
        # imap方法类似于map方法,会将列表中的每个元素作为函数的参数加入到池中运行,并且返回结果顺序与列表中元素顺序相同
        for res in pool.imap(test, [1, 3, 5]):
            print(res)
        # imap_unordered方法与imap方法基本相同,但返回结果的顺序为先执行完先返回
        for res in pool.imap_unordered(test, [1, 3, 5]):
            print(res)
    

    相关文章

      网友评论

          本文标题:python进线程——多进程与多线程对比与介绍

          本文链接:https://www.haomeiwen.com/subject/wzblhhtx.html