Python 中的串行执行 并发执行 同步异步

程序的执行:
串行执行:

import requests
import time

def get_page(url):
    print('GET: %s' %url)
    response=requests.get(url)
    print(url,len(response.text))
    return response.text

urls=[
    'https://www.baidu.com',
    'https://www.python.org',
    'https://www.openstack.org'
]

#程序的执行是串行执行
start=time.time()
for url in urls:
   res=get_page(url) #任务的调用方式是同步调用:提交一个任务,然后在原地等待,等待返回结果后再执行下一行代码
stop=time.time()
print(stop-start) #2.664152145385742

串行不以为效率一定低,当程序是纯计算的话,串行执行并没有效率问题.
但是如果遇到IO密集型程序串行使,效率极低.
所以需要进行 并发

并发执行(并行执行):

from multiprocessing import Process
from threading import Thread
import 
### 串行、并行、并发异步同步的概念及区别 #### 串行 串行是指多个任务按照严格的先后顺序依次执行,即一个任务只有在其前驱任务完全结束后才会开始。这种方式简单直观,在单核处理器上较为常见[^2]。 #### 并行 并行意味着在同一时刻有多个计算资源(如CPU核心)同时处理不同的任务片段或不同任务。真正的并行能够显著提升性能,因为它充分利用了硬件的多核特性[^1]。 #### 并发 并发描述的是系统能够在短时间内交替快速响应多个任务的能力,即使这些任务实际上可能并未真正意义上的“同时”发生。在现代操作系统中,通过时间片轮转等方式使得看似多个任务几乎是在同一时间内被执行。值得注意的是,并发不一定涉及实际的同时性;它更强调的是对外界表现出能高效管理多项工作的能力[^3]。 #### 同步 同步模式下,当前的操作必须等到前面的操作完成后才能继续进行下去,这通常涉及到阻塞等待直到某个特定条件满足为止。这样的机制有利于保障数据的一致性和准确性,但也可能导致效率低下,尤其是在网络通信或者I/O密集型应用场合[^4]。 #### 异步 相比之下,异步允许发起一个新的请求而不必立刻得到回应就可以去做其他事情,一旦收到结果通知再回来处理后续逻辑。这样做的好处是可以提高吞吐量和用户体验流畅度,因为主流程不必因某些耗时较长的任务而停滞不前。为了支持异步行为,往往借助回调函数、Future/Promise对象或是协程等高级抽象来简化编程模型。 ```python import asyncio async def async_task(): print('Task started') await asyncio.sleep(1) # Simulate an asynchronous operation with sleep. print('Task finished') # Running the asynchronous task using event loop. loop = asyncio.get_event_loop() loop.run_until_complete(async_task()) ```
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值