总结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实现百度语音识别api
Apr 10 Python
Python简单获取网卡名称及其IP地址的方法【基于psutil模块】
May 24 Python
利用python对Excel中的特定数据提取并写入新表的方法
Jun 14 Python
Python装饰器简单用法实例小结
Dec 03 Python
Django开发的简易留言板案例详解
Dec 04 Python
Python绘制热力图示例
Sep 27 Python
python使用协程实现并发操作的方法详解
Dec 27 Python
深入了解如何基于Python读写Kafka
Dec 31 Python
解决python父线程关闭后子线程不关闭问题
Apr 25 Python
python实现在列表中查找某个元素的下标示例
Nov 16 Python
五分钟学会怎么用python做一个简单的贪吃蛇
Jan 12 Python
利用python+request通过接口实现人员通行记录上传功能
Jan 13 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基于socket实现SMTP发送邮件的方法
2015/03/05 PHP
Yii2框架加载css和js文件的方法分析
2019/05/25 PHP
PHP-FPM 设置多pool及配置文件重写操作示例
2019/10/02 PHP
ActiveX控件与Javascript之间的交互示例
2014/06/04 Javascript
jQuery定义背景动态切换效果的方法
2015/03/23 Javascript
Nodejs学习笔记之测试驱动
2015/04/16 NodeJs
详解Angular 4.x NgTemplateOutlet
2017/05/24 Javascript
从零开始搭建一个react项目开发
2018/02/09 Javascript
vue组件之间通信实例总结(点赞功能)
2018/12/05 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
JavaScript实现省市联动效果
2019/11/22 Javascript
Python实现统计代码行的方法分析
2017/07/12 Python
TF-IDF与余弦相似性的应用(一) 自动提取关键词
2017/12/21 Python
Python 实现某个功能每隔一段时间被执行一次的功能方法
2018/10/14 Python
python引入不同文件夹下的自定义模块方法
2018/10/27 Python
pygame游戏之旅 添加键盘按键的方法
2018/11/20 Python
Python多线程threading模块用法实例分析
2019/05/22 Python
python manage.py runserver流程解析
2019/11/08 Python
Django 如何使用日期时间选择器规范用户的时间输入示例代码详解
2020/05/22 Python
Adobe Html5 Extension开发初体验图文教程
2017/11/14 HTML / CSS
Steve Madden官网:美国鞋类品牌
2017/01/29 全球购物
Magee 1866官网:Donegal粗花呢外套和大衣专家
2019/11/01 全球购物
物业管理个人自我评价
2013/11/08 职场文书
平面设计的岗位职责
2013/11/08 职场文书
大学生收银员求职信分享
2014/01/02 职场文书
挂科检讨书范文
2014/02/20 职场文书
物业总经理岗位职责
2014/02/28 职场文书
金融管理毕业生求职信
2014/03/03 职场文书
网络信息安全承诺书
2014/03/26 职场文书
公司聘任书模板
2014/03/29 职场文书
运动会班级口号
2014/06/09 职场文书
党员批评与自我批评(5篇)
2014/09/23 职场文书
井冈山红色之旅感想
2014/10/07 职场文书
2015年新教师工作总结
2015/04/28 职场文书
【海涛dota解说】海涛小满开黑4v5被破两路翻盘潮汐第一视角解说
2022/04/01 DOTA
在Python 中将类对象序列化为JSON
2022/04/06 Python