База Hintsage

Программирование Python

Язык Python и его модель данных.

Темы раздела

Выберите подраздел

Практика

Вопросы: Программирование Python

Вам дан код с ограничением времени ожидания. Как asyncio.wait обработает задачу, не завершившуюся к моменту тайм-аута?

import asyncio

async def job():
    await asyncio.sleep(5)
    return 42

async def main():
    task = asyncio.create_task(job())
    done, pending = await asyncio.wait({task}, timeout=0.1)
    print(task in done, task in pending, task.cancelled())

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

При запуске с методом spawn этот модуль создаёт дочерний процесс рекурсивно. Какую роль играет проверка __name__ == "__main__"?

import asyncio
import multiprocessing as mp

ctx = mp.get_context("spawn")

def worker():
    asyncio.run(asyncio.sleep(0))

async def main():
    process = ctx.Process(target=worker)
    process.start()
    process.join()

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

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

import asyncio

async def job(name, delay, fail=False):
    await asyncio.sleep(delay)
    if fail:
        raise ValueError(name)
    print(name)
    return name

async def main():
    tasks = [
        asyncio.create_task(job("A", 0.1, True)),
        asyncio.create_task(job("B", 0.2)),
    ]
    try:
        await asyncio.gather(*tasks)
    except ValueError:
        print("gather failed")
    await asyncio.sleep(0.2)
    print(tasks[1].done())

asyncio.run(main())

Показано 101120 из 348