Уведомления

Группа в Telegram: @pythonsu

#1 Март 1, 2017 07:53:43

wano
Зарегистрирован: 2015-12-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

async... да как же он работает то?

Добрый день.
Как же сделать что бы две функции 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))

Офлайн

#2 Март 1, 2017 08:42:41

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

async... да как же он работает то?

wano
time.sleep(5)
Этим вы останавливаете ВЕСЬ поток. Используйте asyncio.sleep



Офлайн

#3 Март 1, 2017 08:58:31

wano
Зарегистрирован: 2015-12-29
Сообщения: 4
Репутация: +  0  -
Профиль   Отправить e-mail  

async... да как же он работает то?

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))

Офлайн

#4 Март 1, 2017 09:18:48

plusplus
От:
Зарегистрирован: 2009-01-05
Сообщения: 418
Репутация: +  15  -
Профиль   Отправить e-mail  

async... да как же он работает то?

wano
как сделать что бы я получил три одновременно выполняющихся функции (получил три ответа примерно в одно время)?
Использовать потоки или процессы. async предназначен для асинхронных функций.



Офлайн

#5 Март 1, 2017 09:50:23

4kpt_V
От: Харьков
Зарегистрирован: 2017-02-19
Сообщения: 299
Репутация: +  12  -
Профиль   Отправить e-mail  

async... да как же он работает то?

Вообще да. Нужно разобраться, что такое блокируемые и не-блокируемые функции…

Офлайн

#6 Март 1, 2017 10:15:44

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

async... да как же он работает то?

wano
import asyncio, io - это input/output пока в вашей программе нет ввода/вывода, пытаться сэмулировать асинхронные операции бессмысленно. Сделайте тестовый сервер, который просто отдает данные по порядку и попробуйте обращаться к нему асинхронно.



Отредактировано FishHook (Март 1, 2017 10:16:37)

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version