import threading
import time

class dualsum(threading.Thread):
    
    def __init__(self, istart, iextent, ilist):
        threading.Thread.__init__(self)

        self.begin = istart
        self.extent = iextent
        self.list = ilist
        self.sum = 0.0

    def run(self):
        for j in range( 0, 10000 ):
            for i in range( self.begin, self.begin+self.extent ):
                self.sum += self.list[i]

    def getsum(self):
        return self.sum


def main():

    size = 100
    biglist = []
    for i in range( 0, size ):
        biglist.append( i )

    ds1 = dualsum( 0, size/2, biglist )
    ds2 = dualsum( size/2, size/2, biglist )
    singlet = dualsum(0, size, biglist)

    starttime = time.clock()
    singlet.start()
    singlet.join()
    endtime = time.clock()

    print "single sum is ", singlet.getsum()
    print "time is ", endtime - starttime

    starttime = time.clock()

    ds1.start()
    ds2.start()

    ds1.join()
    ds2.join()

    endtime = time.clock()

    print "dual sum is ", ds1.getsum() + ds2.getsum()
    print "time is ", endtime - starttime




if __name__ == "__main__":
    main()


