美文网首页
python如何处理并发

python如何处理并发

作者: 瀚齐 | 来源:发表于2018-06-13 15:33 被阅读0次

    Mutilprocessing 包提供本地和远程并发性,通过子进程而不是线程有效地侧移“全局解释器锁”。进程是通过创建一个Process对象,然后调用start方法产生

    上下文启动法:

    • spawn:父进程启动一个新的python解释器,子进程只会进行进程对象run()
    • fork:父进程os.fork() 来分叉python解释器,子进程与父进程有效性相同,父进程所有资源都由子进程继承。(多线程间存在安全性问题)
    • forkserver:当使用此方法时,服务进程启动。无论何时需要新进程,父进程都会连接到服务器并请求它分一个新子进程。forkserver是单线程的,因此可以安全使用os.fork()。没有不必要的资源被继承
    import mutilprocessing as mp
    mp.set_start_method(‘spawn’) 只能使用一次
    mp.get_context(‘spawn’) 可以多次使用
    

    进程间交换对象

    Mutilprocessing 支持两种进程间通信信道:

    • 队列(queue):
      • 类似克隆,队列是线程和进程(安全)
    • 管道(pipe):
      • 函数pipe()返回一对由管道连接的连接对象,默认情况下是双向的。
    a, b = pipe()
    

    通过返回两个对象表示管道两端,每个对象都有send()和rec()两种方法。
    如果两进程或两线程试图同时读取或同时写入管道了另一端,数据可能损坏。

    相关文章

      网友评论

          本文标题:python如何处理并发

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