У меня есть поток, который добавляет строки в self.output и цикл, который выполняется до тех пор, пока self.done не станет истинным (или не будет достигнуто максимальное время выполнения).
Есть ли более эффективный способ сделать это, кроме использования цикла while, который постоянно проверяет, выполнено ли это. Цикл while заставляет процессор загружаться до 100% во время работы.
time.clock()
while True:
if len(self.output):
yield self.output.pop(0)
elif self.done or 15 < time.clock():
if 15 < time.clock():
yield "Maximum Execution Time Exceeded %s seconds" % time.clock()
break