总结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 相关文章推荐
python2.7删除文件夹和删除文件代码实例
Dec 18 Python
Python解决鸡兔同笼问题的方法
Dec 20 Python
python Django模板的使用方法
Jan 14 Python
Python结合ImageMagick实现多张图片合并为一个pdf文件的方法
Apr 24 Python
python实现顺序表的简单代码
Sep 28 Python
树莓派使用USB摄像头和motion实现监控
Jun 22 Python
PyCharm2019安装教程及其使用(图文教程)
Sep 29 Python
Python实现病毒仿真器的方法示例(附demo)
Feb 19 Python
python GUI库图形界面开发之PyQt5窗口背景与不规则窗口实例
Feb 25 Python
Python selenium页面加载慢超时的解决方案
Mar 18 Python
浅谈在JupyterNotebook下导入自己的模块的问题
Apr 16 Python
如何使用python的ctypes调用医保中心的dll动态库下载医保中心的账单
May 24 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实现天干地支计算器示例
2014/03/14 PHP
php返回相对时间(如:20分钟前,3天前)的方法
2015/04/14 PHP
基于ThinkPHP5.0实现图片上传插件
2017/09/25 PHP
总结PHP代码规范、流程规范、git规范
2018/06/18 PHP
PHP发送邮件确认验证注册功能示例【修改别人邮件类】
2019/11/09 PHP
异步javascript的原理和实现技巧介绍
2012/11/08 Javascript
Jquery中使用setInterval和setTimeout的方法
2013/04/08 Javascript
js数组去重的常用方法总结
2014/01/24 Javascript
jQuery实现简单网页遮罩层/弹出层效果兼容IE6、IE7
2014/06/16 Javascript
jquery简单实现带渐显效果的选项卡菜单代码
2015/09/01 Javascript
jQuery EasyUI提交表单验证
2016/07/19 Javascript
JavaScript关于提高网站性能的几点建议(一)
2016/07/24 Javascript
vue组件 $children,$refs,$parent的使用详解
2017/07/31 Javascript
二维码图片生成器QRCode.js简单介绍
2017/08/18 Javascript
在vue中使用vue-echarts-v3的实例代码
2018/09/13 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
js验证身份证号码记录的方法
2019/04/26 Javascript
使用vue中的混入mixin优化表单验证插件问题
2019/07/02 Javascript
vue中实现回车键登录功能
2020/02/19 Javascript
vue路由权限校验功能的实现代码
2020/06/07 Javascript
JavaScript语句错误throw、try及catch实例解析
2020/08/18 Javascript
vue 如何使用递归组件
2020/10/23 Javascript
jQuery实现简单轮播图效果
2020/12/27 jQuery
Python实现二叉树结构与进行二叉树遍历的方法详解
2016/05/24 Python
快速解决安装python没有scripts文件夹的问题
2018/04/03 Python
python 使用递归回溯完美解决八皇后的问题
2020/02/26 Python
python 代码实现k-means聚类分析的思路(不使用现成聚类库)
2020/06/01 Python
python 模拟登陆163邮箱
2020/12/15 Python
Python中Pyspider爬虫框架的基本使用详解
2021/01/27 Python
英国鞋类及配饰零售商:Kurt Geiger
2017/02/04 全球购物
最新教师自我评价分享
2013/11/12 职场文书
工作疏忽检讨书
2014/01/25 职场文书
《夕阳真美》教学反思
2014/04/27 职场文书
四川省传达学习贯彻党的群众路线教育实践活动总结大会精神新闻稿
2014/10/26 职场文书
学校中层领导培训心得体会
2016/01/11 职场文书
详解CSS中postion和opacity及cursor的特性
2022/08/14 HTML / CSS