简单理解异步编程(python)和异步编程(nodejs)

39 篇文章 4 订阅
2 篇文章 0 订阅

同步编程

同一时间只能做一件事。python就是同步编程(当然,python也能同步)。

异步编程

同一时间可以做多件事。nodejs就是异步编程(同理,nodejs也能异步)。

举个栗子

测试文件夹test里有两个空的文本文件1.txt2.txt

├─test
   ├─1.txt
   ├─2.txt

我想完成两个任务:

  • 1.txt写入hello
  • 删除2.txt文件

同步实现

# 导入模块
import os
# 写入操作
with open('1.txt', 'w') as f:
    f.write('hello')
print('写入完成')
# 删除操作
os.unlink('2.txt')
print('删除完成')
'''输出结果
写入完成
删除完成
'''

异步实现

// 导入模块
const fs = require('fs')
// 写入操作
fs.writeFile('1.txt', 'hello', (err) => {
    if (err) throw err
    console.log('写入完成')
})
// 删除操作
fs.unlink('2.txt', (err) => {
    if (err) throw err
    console.log('删除完成')
})
/* 输出结果
删除完成
写入完成
*/

运行结果

  • python的代码先输出写入完成,再输出删除完成
  • nodejs的代码先输出删除完成,后输出写入完成

分析解释

python是同步编程,同一时间只能做一件事。python的代码按顺序从上到下执行,先执行写入操作,再打印输出,然后执行删除操作,最后打印输出。也就是说python下一步的代码必须等待上一步的代码执行完毕后才能执行,所以python的代码先输出写入完成,再输出删除完成

nodejs是异步编程,同一时间可以做多件事。nodejs的代码同时执行写入操作和删除两个操作,这两个任务之间无需等待。此外,删除操作直接删就完事了,而写入操作要复杂一些,写入操作的时间要比删除操作的时间长,所以nodejs的代码先输出删除完成,而后输出写入完成

拓展思维

很明显,对于举的这个栗子来说,nodejs代码的执行效率要比python代码的执行效率高,因为nodejs是同时执行两个任务,而python是等待一个任务完成后再执行下一个任务。

这里的文件写入和文件删除两个操作之间互不影响,但很多时候,多个任务或事件之间具有关联性,也就是说你必须先处理任务一,等待任务一完成后你才能处理任务二,异步编程就发挥不出优势了,还得同步编程。

因此,采用同步编程还是异步编程还得看实际情况。如果你的项目是爬虫这种批量而又互斥的任务时,采用异步编程效率要高很多。但,如果涉及到流程控制类的任务时,还是需要同步编程。

引用参考

https://nodejs.org/api/fs.html
https://docs.python.org/3/library/os.html
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Xavier Jiezou

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值