The most readable way to end an infinite loop is to break out of the loop when some condition is met.
# top_of_the_minute: loop forever until seconds is zero import datetime print('Waiting {}...'.format(datetime.datetime.now().second)) while True: # break out of the infinite loop when seconds is zero if not datetime.datetime.now().second: break # or exit('Done.') or quit('Done.') or raise SystemExit('Done.') or sys.exit('Done.') print('Done.')I often use sys.exit() as mentioned by @Phukett2 above but raise SystemExit or exit([text or number]) or quit([text or number]) work just as well and do not require an import.
break is best but raise SystemExit('Done.') works well too.