from timeit import default_timer as timer
from threading import Thread
####from multiprocessing import Process as Thread
import os
# for ideone.com
class NullFile:
def write(self, data):
pass
devnull = NullFile()
#
def printNumbers(lowEnd, highEnd):
while(lowEnd <= highEnd):
print(repr(lowEnd),file=devnull)
lowEnd += 1
countTo = 100000
#Test using 1 thread.
startSingleThread = timer()
printNumbers(0,countTo)
elapsedSingleThread = (timer() - startSingleThread)
#Test using 10 threads
numberOfThreads = 10
countAmountPerThread = countTo//numberOfThreads
startTenThread = timer()
threads = []
for i in range(numberOfThreads):
threadLowEnd = i*countAmountPerThread
threadHighEnd = (i+1)*countAmountPerThread
t = Thread(target=printNumbers, args=(threadLowEnd,threadHighEnd,))
threads.append(t)
t.daemon = True
t.start()
#Join all existing threads to main thread.
for t in threads: t.join()
elapsedTenThread = (timer() - startTenThread)
print("Time for 1 thread: " + repr(elapsedSingleThread))
print("time for 10 threads: " + repr(elapsedTenThread))
ZnJvbSB0aW1laXQgaW1wb3J0IGRlZmF1bHRfdGltZXIgYXMgdGltZXIKZnJvbSB0aHJlYWRpbmcgaW1wb3J0IFRocmVhZAojIyMjZnJvbSBtdWx0aXByb2Nlc3NpbmcgaW1wb3J0IFByb2Nlc3MgYXMgVGhyZWFkCmltcG9ydCBvcwoKIyBmb3IgaWRlb25lLmNvbQpjbGFzcyBOdWxsRmlsZToKICAgIGRlZiB3cml0ZShzZWxmLCBkYXRhKToKICAgICAgICBwYXNzCmRldm51bGwgPSBOdWxsRmlsZSgpCiMKCmRlZiBwcmludE51bWJlcnMobG93RW5kLCBoaWdoRW5kKToKICAgIHdoaWxlKGxvd0VuZCA8PSBoaWdoRW5kKToKICAgICAgICBwcmludChyZXByKGxvd0VuZCksZmlsZT1kZXZudWxsKQogICAgICAgIGxvd0VuZCArPSAxCgoKY291bnRUbyA9IDEwMDAwMAoKI1Rlc3QgdXNpbmcgMSB0aHJlYWQuCnN0YXJ0U2luZ2xlVGhyZWFkID0gdGltZXIoKQpwcmludE51bWJlcnMoMCxjb3VudFRvKQplbGFwc2VkU2luZ2xlVGhyZWFkID0gKHRpbWVyKCkgLSBzdGFydFNpbmdsZVRocmVhZCkKCiNUZXN0IHVzaW5nIDEwIHRocmVhZHMKbnVtYmVyT2ZUaHJlYWRzICAgICAgPSAxMApjb3VudEFtb3VudFBlclRocmVhZCA9IGNvdW50VG8vL251bWJlck9mVGhyZWFkcwoKc3RhcnRUZW5UaHJlYWQgPSB0aW1lcigpCnRocmVhZHMgPSBbXQpmb3IgaSBpbiByYW5nZShudW1iZXJPZlRocmVhZHMpOgogICAgdGhyZWFkTG93RW5kICA9IGkqY291bnRBbW91bnRQZXJUaHJlYWQKICAgIHRocmVhZEhpZ2hFbmQgPSAoaSsxKSpjb3VudEFtb3VudFBlclRocmVhZAogICAgdCA9IFRocmVhZCh0YXJnZXQ9cHJpbnROdW1iZXJzLCBhcmdzPSh0aHJlYWRMb3dFbmQsdGhyZWFkSGlnaEVuZCwpKQogICAgdGhyZWFkcy5hcHBlbmQodCkKICAgIHQuZGFlbW9uID0gVHJ1ZQogICAgdC5zdGFydCgpCgojSm9pbiBhbGwgZXhpc3RpbmcgdGhyZWFkcyB0byBtYWluIHRocmVhZC4KZm9yIHQgaW4gdGhyZWFkczogdC5qb2luKCkKCmVsYXBzZWRUZW5UaHJlYWQgPSAodGltZXIoKSAtIHN0YXJ0VGVuVGhyZWFkKQoKcHJpbnQoIlRpbWUgZm9yIDEgdGhyZWFkOiAiICsgcmVwcihlbGFwc2VkU2luZ2xlVGhyZWFkKSkKcHJpbnQoInRpbWUgZm9yIDEwIHRocmVhZHM6ICIgKyByZXByKGVsYXBzZWRUZW5UaHJlYWQpKQo=