• Python中的进程


    Python中的进程

    多进程

    多进程是真正的并行

    Python中的GIL,多线程不是CPU密集型程序的好的选择

    多进程可以绕过GIL

    多进程可以完全独立的进程环境中运行程序,可以充分利用多处理器

    multiprocessing类

    Process类

    Process类遵循了Thread类的API.常用的进程线程方法大致相同

    注意:在创建子进程的时候,windows会将当前父类代码重新加载执行一次,linux和mac会使用fork方法将父进程代码拷贝一份,再去执行

    所以Windows下创建子进程要放入__name__=='__main__'中执行

    名称 说名
    pid 查看进程id,等同于os.getpid()
    ppid 查看父进程的id(parent pid)
    exitcode 进程的退出状态码
    terminate() 终止指定的进程

    进程间同步

    multiprocessing提供了共享内存,服务器进程来共享数据,还提供了Queue队列,Pipe管道用于进程间通信.

    通讯方式不同:

    1.多进程就是启动多个解释器进程,进程同新建必须序列化,反序列化,所以不能序列化的数据不能通信

    2.数据的线程安全问题:

    ​ 由于每个进程中没有实现多线程,GIL就没什么用了

    进程池

    multiprocessing.Pool是进程池类

    名称 说明
    apply() 阻塞执行,导致主线程执行其他子进程就像一个个执行
    apply_async() 与apple方法使用一致,非阻塞执行,得到结果后会执行回调
    close() 关闭池,池不能再接受新的任务
    terminate() 结束工作进程,不再处理未处理的任务
    join() 主进程阻塞等待子进程的退出,join方法要在close或terminate之后使用
  • 相关阅读:
    Writing an XMLRPC server or client in ASP.Net: Part 1
    a article test
    基于Android的一个简单多媒体播放器
    一涉及多个知识点的小测试程序
    Android蓝牙测试—发送一文件到另一蓝牙设备
    Android开发入门精品文章导引
    关于List对象的重复项清除和倒序处理
    关于Android的布局
    Android中对文本文件的读写处理
    Android系统中震动功能的测试
  • 原文地址:https://www.cnblogs.com/agsol/p/11716034.html
Copyright © 2020-2023  润新知