概述
同步编程
同一时间只能做一件事。python
就是同步编程(当然,python
也能同步)。
异步编程
同一时间可以做多件事。nodejs
就是异步编程(同理,nodejs
也能异步)。
举个栗子
测试文件夹test
里有两个空的文本文件1.txt
和2.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
最后
以上就是标致帆布鞋为你收集整理的简单理解异步编程(python)和异步编程(nodejs)同步编程异步编程举个栗子同步实现异步实现运行结果分析解释拓展思维引用参考的全部内容,希望文章能够帮你解决简单理解异步编程(python)和异步编程(nodejs)同步编程异步编程举个栗子同步实现异步实现运行结果分析解释拓展思维引用参考所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复