Python并发执行

本文详细介绍了如何利用Map简化并发编程的复杂度,并通过生产者消费者模型实例进行深入探讨。并行化技术显著提高了代码执行效率。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

使用Map简化并发的复杂度,生产者消费者模型实在看的头疼
参考这篇帖子说明的很清楚
结合极客学院这位老师视频的参考代码如下

from multiprocessing.dummy import  Pool as ThreadPool
import requests
import time

urls=[]
#定义网页资源集合
for i in range(1,21):
    newpage= 'http://tieba.baidu.com/p/3522395718?pn=' +str(i)
    urls.append(newpage)

def getsource(url):
    html=requests.get(url).text
    return html

time1=time.time()
for i in urls:
    getsource(i)
time2=time.time()
print('消耗时间%s'%(str(time2-time1)))

time3=time.time()
pool=ThreadPool(8)
doc=pool.map(getsource,urls)
pool.close()
pool.join()
time4=time.time()
print('消耗时间%s'%(str(time4-time3)))

并行化以后加速真是明显:
并行化以后加速真是明显

### Python 中的并发执行与异步编程 #### 并发执行的概念及其重要性 在现代计算环境中,为了提高效率并充分利用多核处理器的能力,程序设计者经常采用并发执行的方法来运行多个任务。Python 提供了多种机制用于实现并发,其中包括但不限于多线程、多进程以及协程等方式[^3]。 对于 I/O 密集型的应用场景而言,合理运用这些技术可以极大地改善系统的整体表现,使得应用程序更加高效且具有更好的响应速度[^2]。 #### 异步编程的基础知识 Python 的 `asyncio` 模块引入了一系列新的语法特性——特别是 `async` 和 `await` 关键字,它们允许开发人员轻松构建基于事件循环驱动的任务调度器,在不阻塞主线程的情况下等待长时间的操作完成,比如网络请求或文件读写等操作[^1]。 这种非阻塞性质意味着当某个函数正在等待外部资源时,其他部分代码仍然可以在同一时间继续工作;一旦所需的数据准备好之后,则会自动唤醒相应的回调函数去处理后续逻辑。 #### 实现异步功能的具体例子 下面给出一段简单的示例代码展示了如何利用上述提到的技术创建一个不会造成整个流程停滞下来的版本: ```python import asyncio async def nonblocking_way(): await asyncio.sleep(1) # Simulate an asynchronous operation with sleep. return "Operation completed" @tsfunc async def async_way(): results = [] tasks = [nonblocking_way() for _ in range(10)] # Wait for all coroutines to complete and gather their results. finished_tasks = await asyncio.gather(*tasks) results.extend(finished_tasks) return len(results) # Running the event loop to execute our coroutine function. if __name__ == "__main__": result = asyncio.run(async_way()) print(result) ``` 这段脚本定义了一个名为 `nonblocking_way()` 的异步函数模拟耗时较长的工作过程,并通过调用它十次作为一组并发任务来进行批量处理。最终返回的是成功结束的数量总和。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值