Skip to content

Instantly share code, notes, and snippets.

@bitnom
Created October 19, 2020 08:43

Revisions

  1. bitnom created this gist Oct 19, 2020.
    25 changes: 25 additions & 0 deletions asyncio.to_thread.py
    Original file line number Diff line number Diff line change
    @@ -0,0 +1,25 @@
    def blocking_io():
    print(f"start blocking_io at {time.strftime('%X')}")
    # Note that time.sleep() can be replaced with any blocking
    # IO-bound operation, such as file operations.
    time.sleep(1)
    print(f"blocking_io complete at {time.strftime('%X')}")

    async def main():
    print(f"started main at {time.strftime('%X')}")

    await asyncio.gather(
    asyncio.to_thread(blocking_io),
    asyncio.sleep(1))

    print(f"finished main at {time.strftime('%X')}")


    asyncio.run(main())

    # Expected output:
    #
    # started main at 19:50:53
    # start blocking_io at 19:50:53
    # blocking_io complete at 19:50:54
    # finished main at 19:50:54