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

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)
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 进程与线程 进程(Process)和线程(Thread)都是操作系统中的基本概念,它们之间有一些优劣和差异。 1....
    0893051f5f11阅读 3,449评论 1 1
  • 进程和线程 对于操作系统来说,一个任务就是一个进程(Process),比如打开一个浏览器就是启动一个浏览器进程,打...
    阙馨妍子阅读 1,657评论 0 1
  • 1.内存的页面置换算法 (1)最佳置换算法(OPT)(理想置换算法):从主存中移出永远不再需要的页面;如无这样的...
    杰伦哎呦哎呦阅读 8,791评论 1 9
  • 1.进程和线程 1.1系统多任务机制 多任务操作机制的引入主要是在相同的硬件资源下怎么提高任务处理效率的!多任务的...
    _宁采臣阅读 4,712评论 0 6
  • 又来到了一个老生常谈的问题,应用层软件开发的程序员要不要了解和深入学习操作系统呢? 今天就这个问题开始,来谈谈操...
    tangsl阅读 9,681评论 0 23

友情链接更多精彩内容