Найти - Пользователи
Полная версия: async... да как же он работает то?
Начало » Python для новичков » async... да как же он работает то?
1
wano
Добрый день.
Как же сделать что бы две функции double выполнялись одновременно?

#!/usr/bin/python3.5
import asyncio
import time

async def double(x):
time.sleep(5)
return x * 2

loop = asyncio.get_event_loop()
c1 = double(6)
c2 = double(4)
print(loop.run_until_complete(c1))
print(loop.run_until_complete(c2))

FishHook
wano
time.sleep(5)
Этим вы останавливаете ВЕСЬ поток. Используйте asyncio.sleep
wano
FishHook
time.sleep я использовал просто для примера долгой задачи.
давайте уберем sleep - сделаем просто долго выполняющуюся функцию
как сделать что бы я получил три одновременно выполняющихся функции (получил три ответа примерно в одно время)?

 #!/usr/bin/python3.5
import asyncio
import time
async def double(x):
    a = 0
    for i in range(100000000):
        a = a + i
    return a
loop = asyncio.get_event_loop()
c1 = double(6)
c2 = double(4)
c3 = double(7)
print(loop.run_until_complete(c1))
print(loop.run_until_complete(c2))
print(loop.run_until_complete(c3))
plusplus
wano
как сделать что бы я получил три одновременно выполняющихся функции (получил три ответа примерно в одно время)?
Использовать потоки или процессы. async предназначен для асинхронных функций.
4kpt_V
Вообще да. Нужно разобраться, что такое блокируемые и не-блокируемые функции…
FishHook
wano
import asyncio, io - это input/output пока в вашей программе нет ввода/вывода, пытаться сэмулировать асинхронные операции бессмысленно. Сделайте тестовый сервер, который просто отдает данные по порядку и попробуйте обращаться к нему асинхронно.
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB