美文网首页
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