总结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 04 Python
Python判断值是否在list或set中的性能对比分析
Apr 16 Python
教你学会使用Python正则表达式
Sep 07 Python
Python面向对象编程之继承与多态详解
Jan 16 Python
Python中偏函数用法示例
Jun 07 Python
python处理csv中的空值方法
Jun 22 Python
python实现从pdf文件中提取文本,并自动翻译的方法
Nov 28 Python
python-opencv颜色提取分割方法
Dec 08 Python
python 使用 requests 模块发送http请求 的方法
Dec 09 Python
Python内存管理实例分析
Jul 10 Python
Python类中方法getitem和getattr详解
Aug 30 Python
pandas 对group进行聚合的例子
Dec 27 Python
python 字典和列表嵌套用法详解
Jun 29 #Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
You might like
Symfony数据校验方法实例分析
2015/01/26 PHP
调用WordPress函数统计文章访问量及PHP原生计数器的实现
2016/03/21 PHP
利用php做服务器和web前端的界面进行交互
2016/10/31 PHP
用JavaScript和注册表脚本实现右键收藏Web页选中文本
2007/01/28 Javascript
Javascript自定义排序 node运行 实例
2013/06/05 Javascript
js实现瀑布流的一种简单方法实例分享
2013/11/04 Javascript
JS实现控制表格单元格垂直对齐的方法
2015/03/30 Javascript
JS实现Select的option上下移动的方法
2016/03/01 Javascript
JavaScript中文件上传API详解
2016/04/01 Javascript
jQuery插件formValidator实现表单验证
2016/05/23 Javascript
JS中判断字符串中出现次数最多的字符及出现的次数的简单实例
2016/06/03 Javascript
js验证手机号、密码、短信验证码代码工具类
2020/06/24 Javascript
Bootstrap modal 多弹窗之叠加关闭阴影遮罩问题的解决方法
2017/02/27 Javascript
php register_shutdown_function函数详解
2017/07/23 Javascript
JavaScript数组,JSON对象实现动态添加、修改、删除功能示例
2018/05/26 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
JavaScript常见事件处理程序实例总结
2019/01/05 Javascript
详解Python中用于计算指数的exp()方法
2015/05/14 Python
如何准确判断请求是搜索引擎爬虫(蜘蛛)发出的请求
2015/10/13 Python
Python 文件管理实例详解
2015/11/10 Python
Tornado协程在python2.7如何返回值(实现方法)
2017/06/22 Python
Python实现爬取需要登录的网站完整示例
2017/08/19 Python
python输入错误密码用户锁定实现方法
2017/11/27 Python
Python读取csv文件分隔符设置方法
2019/01/14 Python
python重试装饰器的简单实现方法
2019/01/31 Python
详解用Python调用百度地图正/逆地理编码API
2020/07/02 Python
Scrapy模拟登录赶集网的实现代码
2020/07/07 Python
Python 代码调试技巧示例代码
2020/08/11 Python
Django创建一个后台的基本步骤记录
2020/10/02 Python
Ted Baker英国官网:男士和女士服装及配件
2017/03/13 全球购物
美国健康和保健平台:healtop
2020/07/02 全球购物
学前班教师的自我鉴定
2013/12/05 职场文书
网络编辑职责
2014/03/01 职场文书
干部理论学习心得体会
2016/01/21 职场文书
vue-cropper插件实现图片截取上传组件封装
2021/05/27 Vue.js
Spring Boot mybatis-config 和 log4j 输出sql 日志的方式
2021/07/26 Java/Android