time.sleep is fine in this case but what if the abc() function takes half a second to execute? Or 5 minutes?
In this case you should use a Timer object.
from threading import Timer
def abc():
print 'Hi'
print 'Hello'
print 'Hai'
for i in xrange(3):
Timer(i, abc).start()