メインループを実行すると、コルーチンが実行されます。そしてそれから、ブロックしない別のコルーチンを始めましょう。どのようにasyncioを実行して他のコルーチンをループから実行するか。Python 3.5
import asyncio,time
async def cor1():
for i in range(10):
await asyncio.sleep(0)
print("cor1",i)
async def cor2():
for i in range(10):
await asyncio.sleep(0)
time.sleep(1)
print("cor2",i)
async def main():
asyncio.ensure_future(cor1())
asyncio.ensure_future(cor2())
print("cor3")
loop = asyncio.get_event_loop()
asyncio.ensure_future(main())
loop.run_forever()
ここでメインループは2つのコルーチンを作成します。しかし、それらは順番に並行して実行されません。誰かが完了するまで、他の人は作業を開始しません。もちろん、それらを別のスレッドで実行し、キューを使用して通信を確立することもできます。しかし、それはあなたがそれらを並行して実行することができますどのようにこれが道である3.5
はありがとう、私を助けました。特別な違いは見られませんでした。 time.sleep(1)は、長期的な操作の実行を意味します。あなたの例では、ある関数がそのアクションを終了していないとき、もう一方の関数は効果がないようになります。そして、私の目標は並列実行を実現することです。 –
if [スレッド](https://docs.python.org/3/library/threading.html?highlight=threading#module-threading)または[マルチプロセッシング](https:// docs)のいずれかのブロッキングタスクを並列実行する必要があります。 .python.org/3/library/multiprocessing.html?highlight =マルチプロセッシング#モジュール - マルチプロセッシング)。 asyncioは '協力マルチタスク'のようなものです。すべてのタスクはコルーチンで、CPU時間を必要とします。 –