ITPub博客

首页 > IT职业 > IT图书 > 简要说明__python3中的进程/线程/协程

简要说明__python3中的进程/线程/协程

IT图书 作者:nanquanc 时间:2021-09-09 09:30:40 0 删除 编辑

多任务可以充分利用系统资源,极大提升程序运行效率,多任务的实现往往与 多线程,多进程,多协程有关

稳定性: 进程 > 线程 > 协程

系统资源占用量:进程 > 线程 > 协程

父子关系: 进程(父亲) > 线程(儿子) > 协程(孙子)

多任务可以充分利用系统资源,极大提升程序运行效率,多任务的实现往往与 多线程,多进程,多协程有关

稳定性: 进程 > 线程 > 协程

系统资源占用量:进程 > 线程 > 协程

父子关系: 进程(父亲) > 线程(儿子) > 协程(孙子)

图片描述

使用3重嵌套创建2进程4线程8协程

import osimport timefrom multiprocessing import Processfrom threading import Threadimport geventfrom gevent import monkey

monkey.patch_all()# 创建两个进程,每个线程两个线程,每个线程两个协程def print_gevent_info(T_info ,G_info):
    print("在协程执行的函数中,所属的进程号为%d,线程的名称为%s,协程的名称为%s"%(os.getpid(),T_info ,G_info))
    time.sleep(0.5)def print_thread_info(T_info):
    print("在线程执行的函数中:线程所属的进程号为:%d,进程的名称为%s"%(os.getpid(),T_info))
    gevent.joinall([gevent.spawn(print_gevent_info, T_info,"g1"), gevent.spawn(print_gevent_info, T_info, "g2")])


    time.sleep(2)def creat_two_thread():
    t1 = Thread(target=print_thread_info, args=("t1",))
    t2 = Thread(target=print_thread_info, args=("t2",))
    t1.start()
    t2.start()def print_process_info(P_info):
    # 创建线程
    creat_two_thread()

    print("在进程执行的函数中,进程的名称为%s进程号为%s"%(P_info,os.getpid()))
    time.sleep(5)    passdef main():
    #创建两个进程
    p1 = Process(target=print_process_info, args=("p1",))

    p2 = Process(target=print_process_info, args=("p2",))    
    # 开启两个进程

    p1.start()

    p2.start()    



if __name__ == "__main__":
    main()

进程可被看做划分资源的单位,进程只负责请求系统资源,然后交由进程内部的线程负责完成任务(进程相当于车间流水线)

线程是实际执行任务的单位,多任务效率的提升主要依赖于线程的数量(线程相当于流水线的工人)

协程是比线程更小占用更小执行单元




来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/1556/viewspace-2804108/ ,如需转载,请注明出处,否则将追究法律责任。

请登录后发表评论 登录
全部评论

注册时间:2019-04-15

  • 博文量
    109
  • 访问量
    855