Generator that yields for every *secs* seconds.

    Example:

        >>> for _ in every(0.1):
        ...     print('Hello')

    You get ``Hello`` output every 0.1 seconds.

def every(secs):
    '''
    Generator that yields for every *secs* seconds.

    Example:

        >>> for _ in every(0.1):
        ...     print('Hello')

    You get ``Hello`` output every 0.1 seconds.
    '''
    time_stated = time.monotonic()
    while True:
        time_yielded = time.monotonic()
        yield time_yielded - time_stated
        time.sleep(max(0, secs + time_yielded - time.monotonic()))