Я пытаюсь запустить две функции в отдельных потоках, которые не блокируют друг друга. Каждый поток содержит цикл.
Вывод приведенного ниже кода:
%reset -f
import asyncio
import time
async def run1():
for i in range(0 , 3) :
print('run1')
time.sleep(1)
async def run2():
for i in range(0 , 3) :
print('run2')
time.sleep(2)
async def main():
results = await asyncio.gather(
run1() , run2())
loop = asyncio.new_event_loop()
asyncio.set_event_loop(loop)
loop.run_until_complete(main())
это:
run2
run2
run2
run1
run1
run1
Но это также может быть
run1
run1
run1
run2
run2
run2
Похоже, что один из потоков run1
или run2
блокирует другой поток до тех пор, пока не завершится текущий запуск.
Я ожидаю вывод, похожий на:
run1
run1
run2
run2
run1
run2
Как разрешить потокам run1
и run2
не блокировать друг друга?
Я использую Python3.