#!/usr/bin/env python3.4 import datetime import time def something(): print(datetime.datetime.now()) # Simulate long running task time.sleep(0.75) start = datetime.datetime.now() if True: start = start.replace(microsecond=0) while True: something() target = start + datetime.timedelta(seconds=1) while target > datetime.datetime.now(): sleep_time = (target - datetime.datetime.now()).total_seconds() time.sleep(sleep_time) start = target