最近我想在本地文件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异步?
答案 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()