千家信息网

Python异步与JavaScript原生异步有什么不同

发表于:2026-10-31 作者:千家信息网编辑
千家信息网最后更新 2026年10月31日,这篇文章主要介绍"Python异步与JavaScript原生异步有什么不同",在日常操作中,相信很多人在Python异步与JavaScript原生异步有什么不同问题上存在疑惑,小编查阅了各式资料,整理
千家信息网最后更新 2026年10月31日Python异步与JavaScript原生异步有什么不同

这篇文章主要介绍"Python异步与JavaScript原生异步有什么不同",在日常操作中,相信很多人在Python异步与JavaScript原生异步有什么不同问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答"Python异步与JavaScript原生异步有什么不同"的疑惑有所帮助!接下来,请跟着小编一起来学习吧!

现在假设我们要请求一个网址:http://httpbin.org/delay/5,这个网址请求以后,需要等待5秒钟才会返回结果。我们使用 jQuery来写一段 JavaScript 代码:

function test_async(){     $.ajax({type: 'GET',             contentType: 'application/json; charset=utf-8',             url: 'http://httpbin.org/delay/5',             success: function (response) {                 console.log('5秒请求返回:', response)              }         })     var a = 1 + 1     a = a * 2     console.log(a)     $.ajax({type: 'GET',             contentType: 'application/json; charset=utf-8',             url: 'http://httpbin.org/ip',             success: function (response) {                 console.log('查询 IP 返回:', response)              }         })     console.log('这里是代码的末尾') }

运行效果如下图所示:

可以看出来,整个代码的执行逻辑与我们生活中的异步是一致的,首先发起了一个5秒的请求,但是程序不会卡住等待,而是继续运行后面的代码,然后发起新的请求。由于新的请求返回时间短,所以新的请求很快返回并打印,最后才是打印的5秒请求的返回结果。

这就像是我们打开了洗衣机的电源,然后去淘米煮饭,米放进了电饭锅,打开电饭锅电源,然后去看书,最后饭先煮好,然后衣服再洗完。

JavaScript 原生的异步请求的过程,与日常生活中的逻辑很像。所以很容易就能理解 JavaScript 的异步流程。

但是 Python 里面,异步又是另外一种情况了。

我们来写一段代码:

import asyncio import aiohttp  async def main():     async with aiohttp.ClientSession() as client:         response = await client.get('http://httpbin.org/delay/5')         result = await response.json()         print('5秒请求返回:', result)         a = 1 + 1         a = a * 2         print(a)         new_response = await client.get('http://httpbin.org/ip')         new_result = await new_response.json()         print('查询 IP 返回:', new_result)         print('这里是代码的末尾')  asyncio.run(main())

运行效果如下图所示:

可以看出,程序依然是串行运行的,根本就没有异步痕迹。

要让程序异步运行,我们需要凑够一批任务提交给 asyncio,让它自己通过事件循环来调度这些任务:

import asyncio import aiohttp   async def do_plus():     a = 1 + 1     a = a * 2     print(a)   async def test_delay(client):     response = await client.get('http://httpbin.org/delay/5')     result = await response.json()     print('5秒请求返回:', result)   async def test_ip(client):     response = await client.get('http://httpbin.org/ip')     result = await response.json()     print('查询 IP 返回:', result)   async def test_print():     print('这里是代码的末尾')   async def main():     async with aiohttp.ClientSession() as client:         tasks = [                 asyncio.create_task(test_delay(client)),                 asyncio.create_task(do_plus()),                 asyncio.create_task(test_ip(client)),                 asyncio.create_task(test_print())                 ]         await asyncio.gather(*tasks)  asyncio.run(main())

运行效果如下图所示:

这是由于,在asyncio 里面,task是可以并行的最小单位,并且,task 要凑够一批一起通过asyncio.gather或者asyncio.wait提交给事件循环以后,才能并行起来。

当使用代码asyncio.create_task(异步函数())的时候,这个异步函数实际上并没有真正运行,所以,在上面的代码中:

tasks = [                 asyncio.create_task(test_delay(client)),                 asyncio.create_task(do_plus()),                 asyncio.create_task(test_ip(client)),                 asyncio.create_task(test_print())                 ]

创建了一个包含4个task 的列表,此时这4个异步函数中的代码都还没有执行。

当再调用await asyncio.gather(*tasks)时,这4个任务被作为4个参数传入到了 asyncio.gather函数中,于是 Python 的事件循环开始调度他们。在这些异步函数中,包含await的地方,就是在告诉 Python,await后面的这个函数可能会有 IO 等待,可以挂起等一会再来看,现在可以去检查事件循环里面其他异步任务是否已经结束等待可以运行。而没有 await的地方依然是串行的,例如do_plus里面的三行代码就是按顺序一次性运行完成的。

所以,当我们使用 Python 的 asyncio 写异步代码时,我们需要提前安排好异步的切换位置并包装为异步任务,然后把一批任务一次性提交给 asyncio,让 Python 自己根据我们安排好的切换逻辑来调度这些任务。

到此,关于"Python异步与JavaScript原生异步有什么不同"的学习就结束了,希望能够解决大家的疑惑。理论与实践的搭配能更好的帮助大家学习,快去试试吧!若想继续学习更多相关知识,请继续关注网站,小编会继续努力为大家带来更多实用的文章!

代码 运行 任务 函数 不同 事件 学习 循环 效果 末尾 程序 逻辑 查询 调度 一次性 地方 就是 更多 电源 电饭锅 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 湖北九亚互联网络科技有限公司 互联网科技财经 智能科技公司是互联网公司吗 广州互联网科技公司 互联网与未来科技 壹账通互联网科技 互联网科技上市公司 常德市电业局互联网科技部 青岛科技大学互联网大赛研究生 速维有品互联网信息科技(苏州)有限公司 民营互联网公司国防科技 允成互联网科技有限公司融资 互联网科技如何创业 互联网时代的科技公司 宇信科技在杭州互联网排第几 神州科技互联网有限公司 张家口科技产业互联网平台 马化腾互联网科技教学 互联网科技和医药行业 科技美学互联网 艺术 上海挚品互联网科技有限公司 苏州找大状互联网科技有限公司 互联网的科技 互联网科技公司华为 互联网最新的科技 港股互联网科技股 迪茉互联网科技 南平创想时代互联网科技有限公司 滨湖区互联网智能科技产品有哪些 高科技和互联网的现代国家
0