总结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文件和目录操作方法大全(含实例)
Mar 12 Python
Python自动调用IE打开某个网站的方法
Jun 03 Python
python3爬虫获取html内容及各属性值的方法
Dec 17 Python
深入解析神经网络从原理到实现
Jul 26 Python
Pytorch GPU显存充足却显示out of memory的解决方式
Jan 13 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
python tkinter 设置窗口大小不可缩放实例
Mar 04 Python
利用Python将图片中扭曲矩形的复原
Sep 07 Python
Python numpy大矩阵运算内存不足如何解决
Nov 19 Python
Jupyter Notebook添加代码自动补全功能的实现
Jan 07 Python
Python爬虫之爬取二手房信息
Apr 27 Python
Python实现的扫码工具居然这么好用!
Jun 07 Python
python 字典和列表嵌套用法详解
Jun 29 #Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
You might like
用mysql内存表来代替php session的类
2009/02/01 PHP
php实现MySQL数据库备份与还原类实例
2014/12/09 PHP
详解php实现页面静态化原理
2017/06/21 PHP
Thinkphp 在api开发中异常返回依然是html的解决方式
2019/10/16 PHP
超级有用的13个基于jQuery的内容滚动插件和教程
2011/07/31 Javascript
深入理解JavaScript系列(12) 变量对象(Variable Object)
2012/01/16 Javascript
判断js中各种数据的类型方法之typeof与0bject.prototype.toString讲解
2013/11/07 Javascript
JavaScript实现防止网页被嵌入Frame框架的代码分享
2014/12/29 Javascript
js控制网页前进和后退的方法
2015/06/08 Javascript
详解javascript高级定时器
2015/12/31 Javascript
JavaScript学习笔记整理_用于模式匹配的String方法
2016/09/19 Javascript
JS 动态加载js文件和css文件 同步/异步的两种简单方式
2016/09/23 Javascript
微信小程序自定义导航隐藏和显示功能
2017/06/13 Javascript
JavaScript数组的5种迭代方法
2017/09/29 Javascript
Koa 中的错误处理解析
2019/04/09 Javascript
vuex存值与取值的实例
2019/11/06 Javascript
用Python创建声明性迷你语言的教程
2015/04/13 Python
利用python写个下载teahour音频的小脚本
2017/05/08 Python
Python 12306抢火车票脚本
2018/02/07 Python
python使用Flask操作mysql实现登录功能
2018/05/14 Python
python脚本开机自启的实现方法
2019/06/28 Python
python使用if语句实现一个猜拳游戏详解
2019/08/27 Python
python查看数据类型的方法
2019/10/12 Python
Python延迟绑定问题原理及解决方案
2020/08/04 Python
python用Configobj模块读取配置文件
2020/09/26 Python
鼠标滚轮事件和Mac触控板双指事件
2019/12/23 HTML / CSS
vivo智能手机官方商城:vivo
2016/09/22 全球购物
Tech21美国/加拿大:英国NO.1防摔保护壳品牌
2018/01/20 全球购物
Ryderwear美国官网:澳大利亚高端健身训练装备品牌
2018/04/24 全球购物
20世纪40年代连衣裙和复古服装:The Seamstress Of Bloomsbury
2018/07/24 全球购物
基层工作经历证明
2014/01/13 职场文书
保密协议书范本
2014/04/22 职场文书
邻里守望志愿服务活动方案
2014/08/15 职场文书
寒暑假实习证明书模板
2014/11/29 职场文书
css3 实现文字闪烁效果的三种方式示例代码
2021/04/25 HTML / CSS
用python基于appium模块开发一个自动收取能量的小助手
2021/09/25 Python