简要说明__python3中的进程/线程/协程 - Go语言中文社区

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


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

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

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

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

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

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

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

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

使用3重嵌套创建2进程4线程8协程
import os
import time
from multiprocessing import Process

from threading import Thread

import gevent
from 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)
    pass


def 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()


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

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

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

版权声明:本文来源简书,感谢博主原创文章,遵循 CC 4.0 by-sa 版权协议,转载请附上原文出处链接和本声明。
原文链接:https://www.jianshu.com/p/25e7f4d3681d
站方申明:本站部分内容来自社区用户分享,若涉及侵权,请联系站方删除。
  • 发表于 2020-01-12 13:04:48
  • 阅读 ( 1181 )
  • 分类:Linux

0 条评论

请先 登录 后评论

官方社群

GO教程

猜你喜欢