import time
import threading
import queue as Queue


def f(q):
    i = 0
    while True:
        q.put(i)
        print('put', i)
        time.sleep(0.5)
        i += 1

def g(l, q):
    while True:
        time.sleep(5)
        l.acquire()
        while not q.empty():
            print(q.get())
            time.sleep(1)
        time.sleep(5)
        l.release()

Q = Queue.Queue()
l = threading.Lock()
t0 = threading.Thread(target=f, args=[Q])
t0.start()
t1 = threading.Thread(target=g, args=[l, Q])
t1.start()