KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I'm trying to figure out multi-threading programming in python. Here's the simple task with which I want to compare serial and parallel speeds. import threading import Queue import time import math def sinFunc(offset, n): result = [] for i in range(n): result.append(math.sin(offset + i * i)) return result def timeSerial(k, n): t1 = time.time() answers = [] for i in range(k): answers.append(sinFunc(i, n)) t2 = time.time() print "Serial time elapsed: %f" % (t2-t1) class Worker(threading.Thread): def __init__(self, queue, name): self.__queue = queue threading.Thread.__init__(self) self.name = name def process(self, item): offset, n = item self.__queue.put(sinFunc(offset, n)) self.__queue.task_done() self.__queue.task_done() def run(self): while 1: item = self.__queue.get() if item is None: self.__queue.task_done() break self.process(item) def timeParallel(k, n, numThreads): t1 = time.time() queue = Queue.Queue(0) for i in range(k): queue.put((i, n)) for i in range(numThreads): queue.put(None) for i in range(numThreads): Worker(queue, i).start() queue.join() t2 = time.time() print "Serial time elapsed: %f" % (t2-t1) if __name__ == '__main__': n = 100000 k = 100 numThreads = 10 timeSerial(k, n) timeParallel(k, n, numThreads) #Serial time elapsed: 2.350883 #Serial time elapsed: 2.843030 Can someone explain to me what's going on? I'm used to C++, and a similar version of this using the module sees the speed-up we would expect.
Tags (comma-separated)
Save Edits
Cancel