python中的进程

文章介绍了Python中进程的基本概念,包括单进程和多进程的执行方式。在多进程部分,通过示例展示了默认情况下进程的并发执行以及如何使用`join`方法来控制进程执行顺序,强调了进程间的资源竞争和CPU调度影响。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >


前言

多任务可以提高效率,比如生活中,可以一边看电视一边吃饭。下面就用python中的进程来模拟下


提示:以下是本篇文章正文内容,下面案例可供参考

1.概念

进程是操作系统给程序分配资源的最小单位。

而一个正在运行的软件就是一个程序,比如pycharm,chrome。操作系统会把内存,cpu,磁盘网络这个资源给程序。
在这里插入图片描述

2.python中单进程

会按照顺序从上往下执行,这个就是程序运行时默认创建的主进程,每隔一秒打印一行信息,6s执行完成。

import time


def eat():
    for i in range(3):
        time.sleep(1)
        print('吃东西~')


def look_tv():
    for i in range(3):
        time.sleep(1)
        print('看电视~')


if __name__ == '__main__':
    # 记录从1970年到当前的秒数,单位是秒
    start = time.time()
    eat()
    look_tv()
    end = time.time()
    print(f'共用时{end-start:.2f}s')

输出结果:

吃东西~
吃东西~
吃东西~
看电视~
看电视~
看电视~
共用时6.00s
3.python中多进程

主进程创建的进程叫子进程

让程序运行时的主进程在创建多个子进程,输出的结果会比较杂乱,原因是CPU的调度是无序的。

3.1默认情况
"""
进程的创建步骤
    1.导入进程包
    import multiprocessing
    2.通过进程类创建进程对象
    进程对象= multiprocessing.Process(target=任务名)
        target:执行的目标任务名,这里指的是函数名(方法名)
        name:进程名,一般不用设置
        group:进程组,目前只能使用None

    3.启动进程执行任务
    进程对象.start()
"""


import time
import multiprocessing


def eat():
    for i in range(3):
        time.sleep(1)
        print('吃东西~')


def look_tv():
    for i in range(3):
        time.sleep(1)
        print('看电视~')


if __name__ == '__main__':
    # 创建子进程
    eat_process = multiprocessing.Process(target=eat)
    look_tv_process = multiprocessing.Process(target=look_tv)

    # 记录从1970年到当前的秒数,单位是秒
    start = time.time()
    # 启动子进程
    eat_process.start()
    look_tv_process.start()

    end = time.time()
    print(f'共用时{end-start:.2f}s')

输出结果:

共用时0.02s
吃东西~
看电视~
看电视~吃东西~

吃东西~
看电视~
3.2子进程调用join方法

每个子进程对象调用join方法,让子进程优先使用CPU

import time
import multiprocessing


def eat():
    for i in range(3):
        time.sleep(1)
        print('吃东西~')


def look_tv():
    for i in range(3):
        time.sleep(1)
        print('看电视~')


if __name__ == '__main__':
    # 创建子进程
    eat_process = multiprocessing.Process(target=eat)
    look_tv_process = multiprocessing.Process(target=look_tv)

    # 记录从1970年到当前的秒数,单位是秒
    start = time.time()
    # 启动子进程
    eat_process.start()
    look_tv_process.start()

    # 优先让子进程使用cpu
    eat_process.join()
    look_tv_process.join()

    end = time.time()
    print(f'共用时{end-start:.2f}s')

输出结果:

看电视~
吃东西~
看电视~
吃东西~
吃东西~
看电视~
共用时3.12s

可以看到节约了大概3s

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值