#When I change line19 to True to use the multiprocessing stuff it all slows 
down. 

from multiprocessing import Process, Manager, Pool, cpu_count
from timeit import default_timer as timer

def f(a,b):
        return dict_words[a]-b

def f_unpack(args):
        return f(*args)

def init():
        global dict_words, dict_keys
        d = {str(k):k for k in range(100000)}
        for k in d:
                dict_words[k] = d[k]
                dict_keys.append(k)

if __name__ == '__main__':
        print 'CPUs:', cpu_count() # 4 on my machine
        if False: # make this a zero to use PODs
                '''
                CPUs: 4
                pool.map: 47.1494848728 1000000 21209.1394571
                map: 49.2051260471 1000000 20323.0858314
                '''
                manager = Manager()
                dict_words = manager.dict()
                dict_keys = manager.list()
        else:
                '''
                CPUs: 4
                pool.map: 3.2546248436 1000000 307255.074872
                map: 1.19043779373 1000000 840027.093617
                '''
                dict_words = {}
                dict_keys = []

        init()

        pool = Pool(cpu_count())
        z=5
        funcs = {'pool.map:': pool.map, 'map': map}
        for name in funcs:
                start = timer()
                x = funcs[name](f_unpack, [(k,z) for k in dict_keys])
                duration = float(timer() -start)
                print funcs[name], duration, len(x), len(x) / duration
-- 
https://mail.python.org/mailman/listinfo/python-list

Reply via email to