[Chicago] threading is slow
Oren Livne
livne at uchicago.edu
Thu Mar 7 02:09:32 CET 2013
Ordering doesn't matter. I can start from a simple example like
http://stackoverflow.com/questions/4413821/multiprocessing-pool-example
and see if I get a speed-up when I increase the # threads. My machine
has 24 cores with 32GB shared mem.
On 3/6/2013 5:35 PM, Daniel Griffin wrote:
> What sort of speed are you looking for here? Does the ordering matter?
> If not then you can just do a multiprocessing Pool and call map with a
> chunk of the million int pairs.
>
>
> On Wed, Mar 6, 2013 at 4:31 PM, Oren Livne <livne at uchicago.edu
> <mailto:livne at uchicago.edu>> wrote:
>
> Thanks so much for all your answers!
>
> I have a text file with a million int pairs, each of which can be
> processed immediately. I would like to set up a queue to read
> lines from the file and feed a thread pool that will process it in
> parallel and output into (say) another queue, to be processed by
> another thread that prints the results.
>
>
> On 3/6/2013 5:19 PM, Brantley Harris wrote:
>> Whoa, back up. What are you trying to do with threads?
>>
>>
>> On Wed, Mar 6, 2013 at 5:05 PM, Daniel Griffin <dgriff1 at gmail.com
>> <mailto:dgriff1 at gmail.com>> wrote:
>>
>> Python has a GIL so threads mostly sort of suck. Use
>> multiprocessing, twisted or celery.
>>
>>
>> On Wed, Mar 6, 2013 at 3:29 PM, Oren Livne
>> <livne at uchicago.edu <mailto:livne at uchicago.edu>> wrote:
>>
>> Dear All,
>>
>> I am new to python multithreading. It seems that using
>> threading causes a slow down with more threads rather
>> than a speedup. should I be using the multiprocessing
>> module instead? Any good examples for threads reading
>> from a queue with multiprocessing?
>>
>> Thanks so much,
>> Oren
>>
>> #!/usr/bin/env python
>> '''Sum up the first 100000000 numbers. Time the speed-up
>> of using multithreading.'''
>> import threading, time, numpy as np
>>
>> class SumThread(threading.Thread):
>> def __init__(self, a, b):
>> threading.Thread.__init__(self)
>> self.a = a
>> self.b = b
>> self.s = 0
>>
>> def run(self):
>> self.s = sum(i for i in xrange(self.a, self.b))
>>
>> def main(num_threads):
>> start = time.time()
>> a = map(int, np.core.function_base.linspace(0,
>> 100000000, num_threads + 1, True))
>> # spawn a pool of threads, and pass them queue instance
>> threads = []
>> for i in xrange(num_threads):
>> t = SumThread(a[i], a[i + 1])
>> t.setDaemon(True)
>> t.start()
>> threads.append(t)
>>
>> # Wait for all threads to complete
>> for t in threads:
>> t.join()
>>
>> # Fetch results
>> s = sum(t.s for t in threads)
>> print '#threads = %d, result = %10d, elapsed Time:
>> %s' % (num_threads, s, time.time() - start)
>>
>> for n in 2 ** np.arange(4):
>> main(n)
>>
>> Output:
>> #threads = 1, result = 4999999950000000, elapsed Time:
>> 12.3320000172
>> #threads = 2, result = 4999999950000000, elapsed Time:
>> 16.5600001812 ???
>> #threads = 4, result = 4999999950000000, elapsed Time:
>> 16.7489998341 ???
>> #threads = 8, result = 4999999950000000, elapsed Time:
>> 16.6720001698 ???
>>
>> _______________________________________________
>> Chicago mailing list
>> Chicago at python.org <mailto:Chicago at python.org>
>> http://mail.python.org/mailman/listinfo/chicago
>>
>>
>>
>> _______________________________________________
>> Chicago mailing list
>> Chicago at python.org <mailto:Chicago at python.org>
>> http://mail.python.org/mailman/listinfo/chicago
>>
>>
>>
>>
>> _______________________________________________
>> Chicago mailing list
>> Chicago at python.org <mailto:Chicago at python.org>
>> http://mail.python.org/mailman/listinfo/chicago
>
>
> --
> A person is just about as big as the things that make him angry.
>
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org <mailto:Chicago at python.org>
> http://mail.python.org/mailman/listinfo/chicago
>
>
>
>
> _______________________________________________
> Chicago mailing list
> Chicago at python.org
> http://mail.python.org/mailman/listinfo/chicago
--
A person is just about as big as the things that make him angry.
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://mail.python.org/pipermail/chicago/attachments/20130306/cd6e496a/attachment.html>
More information about the Chicago
mailing list