Перейти к другим генераторам, когда один из генераторов исчерпан в списке генераторов?

0

У меня есть список генераторов в функции, alternate_all(*args)которая чередуется между каждым генератором в списке, чтобы напечатать их первый элемент, второй элемент и т. Д., Пока все генераторы не будут исчерпаны.

Мой код работает до тех пор, пока генератор не будет исчерпан, и как только произойдет StopIteration, он прекратит печать, когда я хочу, чтобы он продолжил работу с остальными генераторами и игнорировал исчерпанный:

def alternate_all(*args):
    iter_list = []
    for iterable in args:
        iter_list.append(iter(iterable))
    try:
        while True:
            for iterable in iter_list:
                val = next(iter_list[0])
                iter_list.append(iter_list.pop(0))
                yield val
    except StopIteration:
        pass

            
if __name__ == '__main__':
    for i in alternate_all('abcde','fg','hijk'):
        print(i,end='')

Мой вывод:

afhbgic

Когда должно быть:

afhbgicjdke

Как я могу заставить это игнорировать разряженный генератор? Я бы предпочел не использовать itertools и сохранить ту же структуру.