zoukankan      html  css  js  c++  java
  • 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之后使用
  • 相关阅读:
    语句结构1练习
    语句结构(1)
    常用dos命令(4)
    常用dos命令(3)
    常用dos命令(2)
    常用dos命令(1)
    因式分解 · Factor Combinations
    电话号码的字母组合 · Letter Combinations of a Phone Number
    286 walls and gate最近的出口
    286被围绕的区域 · Surrounded Regions
  • 原文地址:https://www.cnblogs.com/agsol/p/11716034.html
Copyright © 2011-2022 走看看