Junior — Middle
Is het mogelijk om bestandsbewerkingen asynchroon uit te voeren met asyncio?
sobes.tech AI
Antwoord van AI
In de standaardbibliotheek van Python biedt asyncio geen ingebouwde middelen voor asynchroon werken met bestanden, omdat bestandsbewerkingen meestal de thread blokkeren.
Het is echter mogelijk om bestandsbewerkingen asynchroon uit te voeren door gebruik te maken van:
- ThreadPoolExecutor samen met
loop.run_in_executor(). Dit stelt je in staat om blokkerende operaties in een aparte thread uit te voeren, zonder de hoofdgebeurtenisslus te blokkeren.
Voorbeeld:
import asyncio
from concurrent.futures import ThreadPoolExecutor
executor = ThreadPoolExecutor(max_workers=3)
async def read_file_async(path):
loop = asyncio.get_running_loop()
with open(path, 'r') as f:
data = await loop.run_in_executor(executor, f.read)
return data
async def main():
content = await read_file_async('example.txt')
print(content)
asyncio.run(main())
Er zijn ook third-party bibliotheken, zoals aiofiles, die een asynchrone interface bieden voor werken met bestanden, gebruikmakend van een vergelijkbare aanpak onder de motorkap.