总结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 09 Python
简单介绍Python中的round()方法
May 15 Python
Python中for循环和while循环的基本使用方法
Aug 21 Python
Python反射的用法实例分析
Feb 11 Python
Ubuntu下使用Python实现游戏制作中的切分图片功能
Mar 30 Python
基于DataFrame改变列类型的方法
Jul 25 Python
python读取各种文件数据方法解析
Dec 29 Python
pandas实现to_sql将DataFrame保存到数据库中
Jul 03 Python
使用 Supervisor 监控 Python3 进程方式
Dec 05 Python
keras实现theano和tensorflow训练的模型相互转换
Jun 19 Python
使用python向MongoDB插入时间字段的操作
May 18 Python
用PYTHON去计算88键钢琴的琴键频率和音高
Apr 10 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与SQL注入攻击[一]
2007/04/17 PHP
实现PHP框架系列文章(6)mysql数据库方法
2016/03/04 PHP
Prototype使用指南之range.js
2007/01/10 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
jQuery学习笔记之jQuery的动画
2010/12/22 Javascript
jQuery自动切换/点击切换选项卡效果的小例子
2013/08/12 Javascript
javascript:json数据的页面绑定示例代码
2014/01/26 Javascript
JavaScript判断字符长度、数字、Email、电话等常用判断函数分享
2015/04/01 Javascript
javascript中sort() 方法使用详解
2015/08/30 Javascript
JS非Alert实现网页右下角“未读信息”效果弹窗
2015/09/26 Javascript
JavaScript引用类型和基本类型详解
2016/01/06 Javascript
Markdown+Bootstrap图片自适应属性详解
2016/05/21 Javascript
深入理解JavaScript中的并行处理
2016/09/22 Javascript
让DIV的滚动条自动滚动到最底部的3种方法(推荐)
2016/09/24 Javascript
JavaScript实现水平进度条拖拽效果
2017/01/18 Javascript
Vue父组件如何获取子组件中的变量
2019/07/24 Javascript
element el-tree组件的动态加载、新增、更新节点的实现
2020/02/27 Javascript
vue+flask实现视频合成功能(拖拽上传)
2021/03/04 Vue.js
Python函数返回值实例分析
2015/06/08 Python
Python中操作符重载用法分析
2016/04/29 Python
详解Python中使用base64模块来处理base64编码的方法
2016/07/01 Python
python利用paramiko连接远程服务器执行命令的方法
2017/10/16 Python
python爬虫基本知识
2018/03/05 Python
Python第三方库face_recognition在windows上的安装过程
2019/05/03 Python
python opencv根据颜色进行目标检测的方法示例
2020/01/15 Python
python palywright库基本使用
2021/01/21 Python
python 对xml解析的示例
2021/02/27 Python
Forever 21美国官网:美国标志性快时尚品牌
2017/02/20 全球购物
美国职棒大联盟官方网上商店:MLBShop.com
2017/11/12 全球购物
为您搜罗全球潮流時尚品牌:HBX
2019/12/04 全球购物
小学校长先进事迹材料
2014/05/13 职场文书
励志演讲稿800字
2014/08/21 职场文书
2015年电信员工工作总结
2015/05/26 职场文书
2016特色励志班级口号
2015/12/24 职场文书
2016年最美孝心少年事迹材料
2016/02/26 职场文书
python使用PySimpleGUI设置进度条及控件使用
2021/06/10 Python