Как сделать данный код асинхронным?
начинаю изучать python асинхронность и нужно перенести данный код в асинхронный вид, так как в потоках и процессах основной поток блокируется. пробовал создавать задачи и асинхронно их выполнять, но не помогло. помогите пожалуйста!!!
with concurrent.futures.ThreadPoolExecutor(max_workers=3) as executor:
with open(checker_file, 'r', encoding="utf-8") as base_file:
futures = {executor.submit(checking, line) for line in base_file}
concurrent.futures.wait(futures)
Ответы (1 шт):
Автор решения: Isaac Azimov
→ Ссылка
Если хочешь на asyncio, то можно использовать библиотеку aiofiles.
Тебе нужно сначала функцию checking тоже сделать асинхронной:
async def checking(line: str):
...
Не забыть импортировать:
import asyncio
import aiofiles
И основной код:
async def main():
async with aiofiles.open(checker_file) as f:
async for line in f:
await checking(line)
if __name__ == "__main__":
asyncio.run(main())
И еще рекомендую почитать статью про генераторы и asyncio чтобы понять как работает асинхронный код.