On Tue, 17 Jul 2018 10:10:49 +0100, Robin Becker wrote: > A user reported an infinite loop in reportlab. I determined a possible > cause and fix and would like to test for absence of the loop. Is there > any way to check for presence/absence of an infinite loop in python? I > imagine we could do something like call an external process and see if > it takes too long, but that seems a bit flaky.
In general, no, it is impossible to detect infinite loops. https://en.wikipedia.org/wiki/Halting_problem That's not to say that either human readers or the compiler can't detect *some* infinite loops ahead of time: # obviously an infinite loop while True: pass and then there's this: https://www.usenix.org/legacy/publications/library/proceedings/vhll/ full_papers/koenig.a but Python's compiler isn't capable of anything like that. The way I sometimes deal with that sort of thing is to re-write selected potentially-infinite loops: while condition: # condition may never become False do something to something like this: for counter in range(1000): if not condition: break do something else: raise TooManyIterationsError -- Steven D'Aprano "Ever since I learned about confirmation bias, I've been seeing it everywhere." -- Jon Ronson -- https://mail.python.org/mailman/listinfo/python-list