为什么Nodejs可以执行文件I / O异步而Python asyncio不能?

时间:2016-10-26 05:43:41

标签: python node.js asynchronous

最近我想在本地文件IO上使用Python async / await,但是在阅读以下链接之后我发现它是不可能的:

Does asyncio supports asynchronous I/O for file operations?

Read file line by line with asyncio

解决方案是aiofiles模块,它基于线程。但是在Nodejs中,只使用基于标准POSIX函数的fs模块,使文件IO异步变得非常完美和容易。为什么在nodejs可以的时候python不能执行I / O异步?

2 个答案:

答案 0 :(得分:4)

但Node.js异步文件I / O也基于线程:

  

请注意除fs.FSWatcher()以外的所有文件系统API   显式同步使用libuv的threadpool,它可以有   对某些人来说,令人惊讶和负面的表现影   应用程序,请参阅UV_THREADPOOL_SIZE文档以获取更多信息   信息。

- 来自https://nodejs.org/api/fs.html#fs_threadpool_usage

所以Node.js fs API与Python asyncio + aiofiles模块的功能相同。

答案 1 :(得分:-1)

使用这样的多线程:

import threading
t = threading.Thread(target=method, name='LoopThread')
t.start()
t.join()