简要说明__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()


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

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

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

目录
相关文章
|
4天前
|
Python
Python中的异步编程与协程实践
【9月更文挑战第28天】本文旨在通过一个简单易懂的示例,介绍如何在Python中利用asyncio库实现异步编程和协程。我们将通过代码示例来展示如何编写高效的并发程序,并解释背后的原理。
|
6天前
|
Python
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
5-5|python开启多线程入口必须在main,从python线程(而不是main线程)启动pyQt线程有什么坏处?...
|
6天前
|
数据库 开发者 Python
实战指南:用Python协程与异步函数优化高性能Web应用
在快速发展的Web开发领域,高性能与高效响应是衡量应用质量的重要标准。随着Python在Web开发中的广泛应用,如何利用Python的协程(Coroutine)与异步函数(Async Functions)特性来优化Web应用的性能,成为了许多开发者关注的焦点。本文将从实战角度出发,通过具体案例展示如何运用这些技术来提升Web应用的响应速度和吞吐量。
12 1
|
6天前
|
调度 Python
揭秘Python并发编程核心:深入理解协程与异步函数的工作原理
在Python异步编程领域,协程与异步函数成为处理并发任务的关键工具。协程(微线程)比操作系统线程更轻量级,通过`async def`定义并在遇到`await`表达式时暂停执行。异步函数利用`await`实现任务间的切换。事件循环作为异步编程的核心,负责调度任务;`asyncio`库提供了事件循环的管理。Future对象则优雅地处理异步结果。掌握这些概念,可使代码更高效、简洁且易于维护。
10 1
|
3天前
|
数据采集 消息中间件 并行计算
进程、线程与协程:并发执行的三种重要概念与应用
进程、线程与协程:并发执行的三种重要概念与应用
11 0
|
3天前
|
数据采集 Linux 调度
Python之多线程与多进程
Python之多线程与多进程
10 0
|
4天前
|
并行计算 关系型数据库 MySQL
30天拿下Python之使用多线程
30天拿下Python之使用多线程
14 0
|
8天前
|
存储 算法 Java
关于python3的一些理解(装饰器、垃圾回收、进程线程协程、全局解释器锁等)
该文章深入探讨了Python3中的多个重要概念,包括装饰器的工作原理、垃圾回收机制、进程与线程的区别及全局解释器锁(GIL)的影响等,并提供了详细的解释与示例代码。
15 0
|
8天前
|
调度 Python
python3 协程实战(python3经典编程案例)
该文章通过多个实战案例介绍了如何在Python3中使用协程来提高I/O密集型应用的性能,利用asyncio库以及async/await语法来编写高效的异步代码。
11 0
|
4天前
|
数据挖掘 索引 Python
Python数据挖掘编程基础3
字典在数学上是一个映射,类似列表但使用自定义键而非数字索引,键在整个字典中必须唯一。可以通过直接赋值、`dict`函数或`dict.fromkeys`创建字典,并通过键访问元素。集合是一种不重复且无序的数据结构,可通过花括号或`set`函数创建,支持并集、交集、差集和对称差集等运算。
14 9
下一篇
无影云桌面