总结python多进程multiprocessing的相关知识


Posted in Python onJune 29, 2021

multiprocessing多进程

概念

总结python多进程multiprocessing的相关知识

创建多进程基本流程

总结python多进程multiprocessing的相关知识

创建进程对象

总结python多进程multiprocessing的相关知识

启动进程 回收进程

总结python多进程multiprocessing的相关知识

代码:

import multiprocessing as mp
from time import sleep

# 进程执行函数
def fun():
    print("开始一个进程")
    sleep(3)
    print("进程结束")

# 创建进程对象
p = mp.Process(target = fun)

p.start()   # 启动进程

p.join()    # 回收进程

运行结果:

开始一个进程
进程结束
Process finished with exit code 0

1 、父子进程是并行执行的 子进程执行函数 父进程执行除子进程外内容:

import multiprocessing as mp
from time import sleep

# 进程执行函数
def fun():
    print("开始一个进程")
    sleep(3)
    print("进程结束")

# 创建进程对象
p = mp.Process(target = fun)    # 把fun函数作为独立子进程 其它函数由进程来执行

p.start()   # 启动进程

sleep(2)
print("父进程执行内容")

p.join()    # 回收进程
print("===============")
"""
pid = os.fork
if pid == 0
    fun()
    os._exit(0)
else:
    os.wait()
"""

运行结果:

开始一个进程
父进程执行内容
进程结束

===============

2、子进程不能改变父进程中变量的值
代码:

import multiprocessing as mp
from time import sleep

a = 1

# 进程执行函数
def fun():
    print("开始一个进程")
    sleep(3)
    global a
    print("a=", a)
    a = 1000
    print("a=", a)
    print("进程结束")

# 创建进程对象
p = mp.Process(target = fun)    # 把fun函数作为独立子进程 其它函数由进程来执行

p.start()   # 启动进程

sleep(2)
print("父进程执行内容")

p.join()    # 回收进程
print("===============")
print("a=", a)

运行结果:

开始一个进程
父进程执行内容
a= 1
a= 1000
进程结束
a= 1

创建多个进程
代码:

"""
创建多个进程
"""

from multiprocessing import Process
import os
from time import sleep

def fun1():
    sleep(2)
    print(os.getppid(), '--', os.getpid(), "吃饭")

def fun2():
    sleep(3)
    print(os.getppid(), '--', os.getpid(), "睡觉")

def fun3():
    sleep(4)
    print(os.getppid(), '--', os.getpid(), "学习")

jobs =[]

for th in [fun1, fun2, fun3]:
    p = Process(target = th)
    jobs.append(p)
    p.start()

for i in jobs:
    i.join()

运行结果:

46013 ? 46022 吃饭
46013 ? 46023 睡觉
46013 ? 46024 学习

含有参数的进程函数
代码:

from multiprocessing import Process
from time import sleep

# 含有参数的进程函数
def worker(sec, name):
    for i in range(3):
        sleep(sec)
        print("I'm %s"%name)
        print("I'm working...")

# p = Process(target = worker, args = (2, "Tom"))
p = Process(target = worker, kwargs = {'name':'tom', 'sec': 2})

p.start()
p.join()

运行结果:

I'm tom
I'm working…
I'm tom
I'm working…
I'm tom
I'm working…

案例练习

总结python多进程multiprocessing的相关知识

代码:

from multiprocessing import Process
import os

filename = './dace.jpg'
size = os.path.getsize(filename)

# 复制上半部分
def up():
    fr = open(filename, 'rb')
    fw = open('bot,jpg', 'wb')
    n = size//2
    fw.write(fr.read(n))
    fw.close()
    fr.close()

# 复制下半部分
def down():
    fr = open(filename, 'rb')
    fw = open('bot,jpg', 'wb')
    fr.seek(size//2.0)
    fw.write(fr.read())
    fw.close()
    fr.close()

p = Process(target = up)
q = Process(target = down)
p.start()
q.start()
p.join()
q.join()

到此这篇关于总结python多进程multiprocessing的相关知识的文章就介绍到这了,更多相关python multiprocessing多进程内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
Python中的两个内置模块介绍
Apr 05 Python
Python实现字典依据value排序
Feb 24 Python
python常用知识梳理(必看篇)
Mar 23 Python
Python使用迭代器捕获Generator返回值的方法
Apr 05 Python
python针对excel的操作技巧
Mar 13 Python
Python简单计算给定某一年的某一天是星期几示例
Jun 27 Python
python实现月食效果实例代码
Jun 18 Python
Python 使用folium绘制leaflet地图的实现方法
Jul 05 Python
python3读取csv文件任意行列代码实例
Jan 13 Python
Python如何使用正则表达式爬取京东商品信息
Jun 01 Python
通过实例解析python创建进程常用方法
Jun 19 Python
Keras多线程机制与flask多线程冲突的解决方案
May 28 Python
python 字典和列表嵌套用法详解
Jun 29 #Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
You might like
详解PHP序列化反序列化的方法
2015/10/27 PHP
PHP+iframe图片上传实现即时刷新效果
2016/11/18 PHP
PHP长网址与短网址的实现方法
2017/10/13 PHP
ExtJS扩展 垂直tabLayout实现代码
2009/06/21 Javascript
Javascript 面向对象 命名空间
2010/05/13 Javascript
jquery中.add()的使用分析
2013/04/26 Javascript
在Firefox下js select标签点击无法弹出
2014/03/06 Javascript
jquery判断复选框选中状态以及区分attr和prop
2015/12/18 Javascript
jQuery文字提示与图片提示效果实现方法
2016/07/04 Javascript
一次$.getJSON不执行的简单记录
2016/07/19 Javascript
JS表格组件神器bootstrap table使用指南详解
2017/04/12 Javascript
ztree实现左边动态生成树右边为内容详情功能
2017/11/03 Javascript
详解nodeJs文件系统(fs)与流(stream)
2018/01/24 NodeJs
jQuery实现的淡入淡出图片轮播效果示例
2018/08/29 jQuery
js实现上传图片并显示图片名称
2019/12/18 Javascript
vue 对axios get pust put delete封装的实例代码
2020/01/05 Javascript
解决Vue中的生命周期beforeDestory不触发的问题
2020/07/21 Javascript
用Python代码来绘制彭罗斯点阵的教程
2015/04/03 Python
详解tensorflow载入数据的三种方式
2018/04/24 Python
Python基于递归算法求最小公倍数和最大公约数示例
2018/07/27 Python
创建Django项目图文实例详解
2019/06/06 Python
基于 Python 实践感知器分类算法
2021/01/07 Python
CSS3制作翻转效果_动力节点Java学院整理
2017/07/11 HTML / CSS
html5 Canvas画图教程(11)—使用lineTo/arc/bezierCurveTo画椭圆形
2013/01/09 HTML / CSS
使用html5 canvas 画时钟代码实例分享
2015/11/11 HTML / CSS
html5 制作地图当前定位箭头的方法示例
2020/01/10 HTML / CSS
AURALog面试题软件测试方面
2013/10/22 面试题
历史学专业大学生找工作的自我评价
2013/10/16 职场文书
信息学院毕业生自荐信范文
2014/03/04 职场文书
乡镇纠风工作实施方案
2014/03/22 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书
公证书
2019/04/17 职场文书
Python读取文件夹下的所有文件实例代码
2021/04/02 Python
解决Mysql的left join无效及使用的注意事项说明
2021/07/01 MySQL
Z-Order加速Hudi大规模数据集方案分析
2022/03/31 Servers
MySQL数据管理操作示例讲解
2022/12/24 MySQL