您当前的位置:首页 > IT编程 > python
| C语言 | Java | VB | VC | python | Android | TensorFlow | C++ | oracle | 学术与代码 | cnn卷积神经网络 | gnn | 图像修复 | Keras | 数据集 | Neo4j | 自然语言处理 | 深度学习 | 医学CAD | 医学影像 | 超参数 | pointnet | pytorch | 异常检测 | Transformers | 情感分类 | 知识图谱 |

自学教程:总结python多进程multiprocessing的相关知识

51自学网 2021-10-30 22:26:23
  python
这篇教程总结python多进程multiprocessing的相关知识写得很实用,希望能帮到您。

multiprocessing多进程

概念

在这里插入图片描述

创建多进程基本流程

在这里插入图片描述

创建进程对象

在这里插入图片描述

启动进程 回收进程

在这里插入图片描述

代码:

import multiprocessing as mpfrom 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 mpfrom 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.forkif pid == 0    fun()    os._exit(0)else:    os.wait()"""

运行结果:

开始一个进程
父进程执行内容
进程结束

===============

2、子进程不能改变父进程中变量的值
代码:

import multiprocessing as mpfrom time import sleepa = 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 Processimport osfrom time import sleepdef 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 Processfrom 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…

案例练习

在这里插入图片描述

代码:

from multiprocessing import Processimport osfilename = './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多进程内容请搜索51zixue.net以前的文章或继续浏览下面的相关文章希望大家以后多多支持51zixue.net!


python 字典和列表嵌套用法详解
Python快速实现一键抠图功能的全过程
万事OK自学网:51自学网_软件自学网_CAD自学网自学excel、自学PS、自学CAD、自学C语言、自学css3实例,是一个通过网络自主学习工作技能的自学平台,网友喜欢的软件自学网站。