总结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二叉树的实现实例
Nov 21 Python
Python删除windows垃圾文件的方法
Jul 14 Python
定制FileField中的上传文件名称实例
Aug 23 Python
下载python中Crypto库报错:ModuleNotFoundError: No module named ‘Crypto’的解决
Apr 23 Python
tensorflow实现简单逻辑回归
Sep 07 Python
Python调用C++,通过Pybind11制作Python接口
Oct 16 Python
python实现比对美团接口返回数据和本地mongo数据是否一致示例
Aug 09 Python
Python tkinter常用操作代码实例
Jan 03 Python
Python sep参数使用方法详解
Feb 12 Python
pandas中ix的使用详细讲解
Mar 09 Python
Python中的xlrd模块使用整理
Jun 15 Python
python中的sys模块和os模块
Mar 20 Python
python 字典和列表嵌套用法详解
Jun 29 #Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
You might like
不用数据库的多用户文件自由上传投票系统(2)
2006/10/09 PHP
php打开文件fopen函数的使用说明
2013/07/05 PHP
Yii编程开发常见调用技巧集锦
2016/07/15 PHP
thinkPHP框架动态配置用法实例分析
2018/06/14 PHP
js 禁用只读文本框获得焦点时的退格键
2010/04/25 Javascript
javascript实用小函数使用介绍
2013/11/11 Javascript
深入理解Java线程编程中的阻塞队列容器
2015/12/07 Javascript
javascript每日必学之基础入门
2016/02/16 Javascript
JS添加或修改控件的样式(Class)实现方法
2016/10/15 Javascript
基于vue的下拉刷新指令和滚动刷新指令
2016/12/23 Javascript
JavaScript实现弹窗效果代码分析
2017/03/09 Javascript
Bootstrap学习笔记 轮播(Carousel)插件
2017/03/21 Javascript
Node.js  REPL (交互式解释器)实例详解
2017/08/06 Javascript
vue使用$emit时,父组件无法监听到子组件的事件实例
2018/02/26 Javascript
Vue实现页面添加水印功能
2019/11/09 Javascript
微信小程序实现组件顶端固定或底端固定效果(不随滚动而滚动)
2020/04/09 Javascript
Python实现在matplotlib中两个坐标轴之间画一条直线光标的方法
2015/05/20 Python
Python输出9*9乘法表的方法
2015/05/25 Python
Python计算三维矢量幅度的方法
2015/06/15 Python
python文件拆分与重组实例
2018/12/10 Python
python web框架中实现原生分页
2019/09/08 Python
用python解压分析jar包实例
2020/01/16 Python
django中的数据库迁移的实现
2020/03/16 Python
python3.6环境下安装freetype库和基本使用方法(推荐)
2020/05/10 Python
捷克领先的户外服装及配件市场零售商:ALPINE PRO
2018/01/09 全球购物
小学生考试获奖感言
2014/01/30 职场文书
安全生产汇报材料
2014/02/17 职场文书
《小蝌蚪找妈妈》教学反思
2014/02/21 职场文书
委托书怎么写
2014/07/31 职场文书
2015年教学副校长工作总结
2015/07/22 职场文书
2016大学生毕业实习心得体会
2016/01/23 职场文书
2016年党员承诺书范文
2016/03/24 职场文书
基于tensorflow权重文件的解读
2021/05/26 Python
MySQL 数据类型选择原则
2021/05/27 MySQL
Python中Matplotlib的点、线形状、颜色以及绘制散点图
2022/04/07 Python
mysql实现将字符串字段转为数字排序或比大小
2022/06/14 MySQL