bwangel23
10/17/2016 - 7:44 AM

Python async for example

Python async for example

#!/usr/bin/env python3
# -*- coding: utf-8 -*-

import asyncio


class AsyncIteratorWrapper:
    def __init__(self, obj):
        self._it = iter(obj)

    async def __aiter__(self):
        return self

    async def __anext__(self):
        try:
            value = next(self._it)
        except StopIteration:
            raise StopAsyncIteration
        return value


class AsyncIteratorWrapper2:
    def __init__(self, obj):
        self._it = iter(obj)

    def __aiter__(self):
        return self

    async def __anext__(self):
        try:
            value = next(self._it)
        except StopIteration:
            raise StopAsyncIteration
        return value


async def show():
    async for letter in AsyncIteratorWrapper("abc"):
        print(letter)


async def show2():
    i = AsyncIteratorWrapper2("abc").__aiter__()
    while True:
        try:
            val = await i.__anext__()
        except StopAsyncIteration:
            break
        else:
            print(val)

loop = asyncio.get_event_loop()
loop.run_until_complete(show())
loop.run_until_complete(show2())
loop.close()