from threading import Thread import time def writenums(f, n): start = time.time() for x in range(n): f.write("%d\n" % x) end = time.time() print(end-start) def spun(name, n): while n > 0: n -= 1 if n % 100000 == 0: d[name] = n d = {} def spin(name): t0 = time.time() for i in range(1000000): spun(name, 2000000) print (name, time.time() - t0, i) #, repr(d)) threads = [ Thread(target = spin, args = ('t1',)), Thread(target = spin, args = ('t2',)), #Thread(target = spin, args = ('t3',)), #Thread(target = spin, args = ('t4',)), #Thread(target = spin, args = ('t5',)), #Thread(target = spin, args = ('t6',)), ] for t in threads: t.daemon = True t.start() # With line buffering writenums(open("./nums", "w", 1), 1000000)