美文网首页
「Python并发编程-3」多进程实现

「Python并发编程-3」多进程实现

作者: 言淦 | 来源:发表于2018-09-25 09:41 被阅读0次

关于多线程的实现及理解,文章总览这篇文章有给出推荐教程,故不赘述。

下面谈谈多进程:

  • 多进程的四种代码实现
  • 多进程的通信
  • 如何启动外部进程

1.关于多进程的四种代码实现,可以看下面的链接,这里不赘述。
Python多进程前三种实现-fork、Process、Pool
Python多进程第四种实现-ProcessPoolExecutor

2.多进程的通信
通常来讲,每个进程包含三个部分:数据段,代码段和堆栈段,而且进程与进程之间是独立的,互不影响的。

一个进程间数据独立的例子:

# 打印结果是每个列表(li)只有一个元素,因为篇幅问题就不贴上了
from multiprocessing import Process
li = []
process_list = []

def foo(i):
    # 向列表中加入当前的进程序列号
    li.append(i)
    print('say hi', li)

for i in range(10):
    p = Process(target=foo, args=(i,))
    process_list.append(p)

for p in process_list:
    p.start()

for p2 in process_list:
    p2.join()

print('ending', li)

一个进程间通信(数据共享)的例子:
进程间通信可以使用Manager,Manager支持 list, dict, Condition, Event,Queue, Value and Array等类型

# 打印结果是每个列表(li)包含多个元素,因为篇幅问题就不贴上了

from multiprocessing import Process,Manager

manager = Manager()
li = manager.list()
process_list = []

def foo(i):
    # 向列表中加入当前的进程序列号
    li.append(i)
    print('say hi', li)

for i in range(10):
    p = Process(target=foo, args=(i,))
    process_list.append(p)

for p in process_list:
    p.start()

for p2 in process_list:
    p2.join()

print('ending', li)

3.启动外部进程
会先打印 parent process 再执行 ls 命令,有点像异步。

import subprocess
child = subprocess.Popen(["ls"])
print("parent process")

上一篇:「Python并发编程-2」基础概念
下一篇:「Python并发编程-4」高并发模拟与处理

相关文章

  • 「Python并发编程-3」多进程实现

    关于多线程的实现及理解,文章总览这篇文章有给出推荐教程,故不赘述。 下面谈谈多进程: 多进程的四种代码实现 多进程...

  • python 进程与并发

    多进程:Python中提供multiprocess模块实现多进程并发 进程并发:concurrent模块 虽然mu...

  • Python并行编程(一):线程的基本概念和线程的两种定义方法以

    前言:本系列将包含Python并行编程的相关技术内容,包括Python线程、Python进程、并发编程的异步模式及...

  • Python 并发编程简介

    1 多线程和多进程 Python语言中既有多线程编程也有多进程编程,也叫做并发编程。 多进程 把一个程序分成几个不...

  • 并发编程记录(一)--单线程、多线程、多进程对比

    Python实现并发编程 多线程 多进程 协程(生成器) 并发编程的基本概念 串行:一个人在一段时间段内只能干一件...

  • Gevent高并发网络库精解

    进程 线程 协程 异步 并发编程(不是并行)目前有四种方式:多进程、多线程、协程和异步。 多进程编程在python...

  • 并发编程

    并发编程三种构造并发程序的方式:基于进程的并发编程、基于IO多路复用的并发编程、基于线程的并发编程1、 基于进程...

  • python multiprocessing模块实现多进程任务中

    python multiprocessing模块实现多进程任务中运行多进程子任务,并实现并发控制。起因是想使用ce...

  • Golang之并发编程一

    并发基础 在说Golang的并发编程之前,先认识一下目前并发的几种实现方式: 1.多进程。操作系统实现的并发模型,...

  • Python多线程

    最近在学习并发编程,打算写一个并发编程系列的文章。之前也看过很多Python多线程多进程的教程、博客等,但收益不大...

网友评论

      本文标题:「Python并发编程-3」多进程实现

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