Python多任务(三)-----多进程

Python中的多进程

进程的概念
  • 进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,是操作系统结构的基础
  • 它可以申请和拥有系统资源,是一个动态的概念,是一个活动的实体。它不只是程序的代码,还包括当前的活动,通过程序计数器的值和处理寄存器的内容来表示。
  • 在早期面向进程设计的计算机结构中,进程是程序的基本执行实体。
  • 在当代面向线程设计的计算机结构中,进程是线程的容器。
  • 程序是指令、数据及其组织形式的描述,进程是程序的实体
  • 进程和程序的理解:
    • 程序:例如xx.py就是一个程序
    • 进程:一个程序运行起来之后,代码 + 用到的资源 称之为进程,它是操作系统分配资源的基本单位。
    • 不仅可以通过线程完成多任务,进程也可以。
创建进程:
  • 与使用threading创建和启动线程类似,可以通过创建Process 对象来创建一个进程并通过调用进程对象的start()方法来启动该进程。
  • Process类中的方法:
方法功能说明
start()创建、启动进程
join()发生堵塞,直到调用该方法的进程结束后解堵塞
  • Process创建进程,完成多任务:
    1. 导入multiprocessing模块
    2. 创建Process类的对象
    3. 启动线程(调用run()方法)
    import time
    
    # 导入 multiprocessing 模块
    import multiprocessing
    
    def sing():
        for i in range(5):
            print("---唱歌---")
            time.sleep(1)
        
    def dance():
        for i in range(5):
            print("---跳舞---")
            time.sleep(1)
        
    def main():
        # 创建 Process类的对象
        p1 = multiprocessing.Process(target=sing)
        p2 = multiprocessing.Process(target=dance)
        
        # 创建、启动进程
        p1.start()
        p2.start()
    
    if __name__ == "__main__":
        main() 
    
  • Process类的 target参数 和 args参数:
    • target参数:指定将来这个进程 去哪个函数执行代码(只带函数名不加括号)。
    • args参数:指定将来调用函数的时候 传递什么数据过去。
      • args参数为一个元组

线程与进程对比

  • 功能区别:
    • 进程:能够完成多任务,比如:在一台电脑上面登录多个QQ
    • 线程:能够完成多任务,比如:一个QQ中多个聊天窗口
  • 定义的不同:
    • 进程是系统进行资源分配和调度的一个独立单位
    • 线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位,线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是他可以与同属性的一个进程的其他线程共享 线程所拥有的全部资源。
  • 区别:
    • 一个程序至少有一个进程,一个进程至少有一个线程。
    • 线程的划分尺度小于进程(资源比进程少),使得多线程程序并发性高。
    • 进程在执行过程中拥有独立的内存单元,而多个线程共享内存,从而极大地提高了程序的运行效率。
    • 线程不能独立执行,必须依存在进程中。
  • 优缺点:
    • 线程和进程在使用上各有优缺点:线程执行开销小,但不利于资源的管理和保护;而进程相反。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值