Форум сайта python.su
0
Добрый день.
Как же сделать что бы две функции 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))
Офлайн
568
wanoЭтим вы останавливаете ВЕСЬ поток. Используйте asyncio.sleep
time.sleep(5)
Офлайн
0
FishHooktime.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))
Офлайн
15
wanoИспользовать потоки или процессы. async предназначен для асинхронных функций.
как сделать что бы я получил три одновременно выполняющихся функции (получил три ответа примерно в одно время)?
Офлайн
12
Вообще да. Нужно разобраться, что такое блокируемые и не-блокируемые функции…
Офлайн
568
wano
import asyncio, io - это input/output пока в вашей программе нет ввода/вывода, пытаться сэмулировать асинхронные операции бессмысленно. Сделайте тестовый сервер, который просто отдает данные по порядку и попробуйте обращаться к нему асинхронно.
Отредактировано FishHook (Март 1, 2017 10:16:37)
Офлайн