总结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 相关文章推荐
有关wxpython pyqt内存占用问题分析
Jun 09 Python
Python中isnumeric()方法的使用简介
May 19 Python
django中的setting最佳配置小结
Nov 21 Python
python去掉空白行的多种实现代码
Mar 19 Python
python 将print输出的内容保存到txt文件中
Jul 17 Python
pyqt远程批量执行Linux命令程序的方法
Feb 14 Python
django框架使用orm实现批量更新数据的方法
Jun 21 Python
python安装pil库方法及代码
Jun 25 Python
详解Python的三种拷贝方式
Feb 11 Python
python+opencv实现移动侦测(帧差法)
Mar 20 Python
Django mysqlclient安装和使用详解
Sep 17 Python
python中数组和列表的简单实例
Mar 25 Python
python 字典和列表嵌套用法详解
Jun 29 #Python
Python连接Postgres/Mysql/Mongo数据库基本操作大全
5行Python代码实现一键批量扣图
Python爬取用户观影数据并分析用户与电影之间的隐藏信息!
python geopandas读取、创建shapefile文件的方法
总结Pyinstaller打包的高级用法
Pandas数据类型之category的用法
Jun 28 #Python
You might like
一个简单的域名注册情况查询程序
2006/10/09 PHP
php中session定期自动清理的方法
2015/11/12 PHP
Yii基于CActiveForm的Ajax数据验证用法示例
2016/07/14 PHP
PHP strcmp()和strcasecmp()的区别实例
2016/11/05 PHP
PHP实现超简单的SSL加密解密、验证及签名的方法示例
2017/08/28 PHP
浅谈PHP中如何实现Hook机制
2017/11/14 PHP
PHP实现数组根据某个字段进行水平合并,横向合并案例分析
2019/10/08 PHP
Js 获取HTML DOM节点元素的方法小结
2009/04/24 Javascript
Raphael带文本标签可拖动的图形实现代码
2013/02/20 Javascript
Extjs407 getValue()和getRawValue()区别介绍
2013/05/21 Javascript
js实现带按钮的上下滚动效果
2015/05/12 Javascript
JS+CSS实现表格高亮的方法
2015/08/05 Javascript
TinyMCE汉化及本地上传图片功能实例详解
2016/05/31 Javascript
javascript创建含数字字母的随机字符串方法总结
2016/08/01 Javascript
标准的js无缝滚动效果
2016/08/30 Javascript
微信小程序图表插件(wx-charts)实例代码
2017/01/17 Javascript
Bootstrap输入框组件简单实现代码
2017/03/06 Javascript
基于javascript的异步编程实例详解
2017/04/10 Javascript
node.JS md5加密中文与php结果不一致的解决方法
2017/05/05 Javascript
基于vue+canvas的excel-like组件实例详解
2017/11/28 Javascript
利用chrome浏览器进行js调试并找出元素绑定的点击事件详解
2021/01/30 Javascript
解决vue自定义全局消息框组件问题
2019/11/22 Javascript
Linux环境下MySQL-python安装过程分享
2015/02/02 Python
Python实现Smtplib发送带有各种附件的邮件实例
2017/06/05 Python
Python实现判断一行代码是否为注释的方法
2018/05/23 Python
我喜欢你 抖音表白程序python版
2019/04/07 Python
python实现简单图书管理系统
2019/11/22 Python
新西兰航空中国官网:Air New Zealand China
2018/07/24 全球购物
一套SQL笔试题
2016/08/14 面试题
个人求职信范文分享
2013/12/13 职场文书
《明天,我们毕业》教学反思
2014/04/24 职场文书
留守儿童工作方案
2014/06/02 职场文书
经验交流材料格式
2014/12/30 职场文书
元旦晚会开场白
2015/05/29 职场文书
vmware虚拟机打不开vmx文件怎么办 ?vmware虚拟机vmx文件打开方法
2022/04/08 数码科技
台积电称即便经济低迷也没有降价的计划
2022/04/21 数码科技