文章详情

短信预约-IT技能 免费直播动态提醒

请输入下面的图形验证码

提交验证

短信预约提醒成功

python多进程multiprocessing的原理和应用

2023-06-20 12:30

关注

这篇文章主要介绍“python多进程multiprocessing的原理和应用”,在日常操作中,相信很多人在python多进程multiprocessing的原理和应用问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”python多进程multiprocessing的原理和应用”的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

multiprocessing多进程

概念

python多进程multiprocessing的原理和应用

创建多进程基本流程

python多进程multiprocessing的原理和应用

创建进程对象

python多进程multiprocessing的原理和应用

启动进程 回收进程

python多进程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()"""

运行结果:

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

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

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

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…

案例练习

python多进程multiprocessing的原理和应用

代码:

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的原理和应用”的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注编程网网站,小编会继续努力为大家带来更多实用的文章!

阅读原文内容投诉

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

软考中级精品资料免费领

  • 历年真题答案解析
  • 备考技巧名师总结
  • 高频考点精准押题
  • 2024年上半年信息系统项目管理师第二批次真题及答案解析(完整版)

    难度     807人已做
    查看
  • 【考后总结】2024年5月26日信息系统项目管理师第2批次考情分析

    难度     351人已做
    查看
  • 【考后总结】2024年5月25日信息系统项目管理师第1批次考情分析

    难度     314人已做
    查看
  • 2024年上半年软考高项第一、二批次真题考点汇总(完整版)

    难度     433人已做
    查看
  • 2024年上半年系统架构设计师考试综合知识真题

    难度     221人已做
    查看

相关文章

发现更多好内容

猜你喜欢

AI推送时光机
位置:首页-资讯-后端开发
咦!没有更多了?去看看其它编程学习网 内容吧
首页课程
资料下载
问答资讯