База Hintsage

Конкурентность и asyncio

Threads, processes, GIL, coroutines и asyncio.

Практика

Вопросы: Конкурентность и asyncio

Вам нужно вынести вычисление из event loop в отдельный процесс. Какой механизм помешает этому коду передать функцию исполнителю?

import asyncio
from concurrent.futures import ProcessPoolExecutor

async def main():
    def square(x):
        return x * x

    loop = asyncio.get_running_loop()
    with ProcessPoolExecutor() as pool:
        result = await loop.run_in_executor(pool, square, 3)
        print(result)

if __name__ == "__main__":
    asyncio.run(main())
Программирование PythonКонкурентность и asyncioPython-разработчик серверных приложений

В сервисе две корутины запускаются через asyncio.gather, но внутри каждой вызывается обычная блокирующая функция. Какой эффект это окажет на выполнение задач?

import asyncio
import time

def blocking_work():
    time.sleep(2)

async def worker(name):
    print(f"{name}: start")
    blocking_work()
    print(f"{name}: done")

async def main():
    await asyncio.gather(worker("A"), worker("B"))

asyncio.run(main())
Программирование PythonКонкурентность и asyncioPython-разработчик серверных приложений

Показано 4150 из 50