can multi-core improve single funciton?

sturlamolden sturlamolden at yahoo.no
Thu Feb 19 02:36:25 CET 2009


On Feb 10, 7:28 am, oyster <lepto.pyt... at gmail.com> wrote:
> I mean this
> [code]
> def fib(n):
>     if n<=1:
>         return 1
>     return fib(n-1)+fib(n-2)


Let's rewrite that slightly and see...



def fib(n, _map=None):
    if not _map: _map = map
    if n > 2:
        return sum(_map(fib, (n-1, n-2)))
    else:
        return 1


if __name__ == '__main__':

    from multiprocessing import Pool
    from time import clock

    p = Pool()
    n = 36

    t0 = clock()
    fib(n, p.map)
    t1 = clock()

    print 'parallel t: %f seconds' % (t1-t0)

    t0 = clock()
    fib(n)
    t1 = clock()

    print 'sequential t: %f seconds' % (t1-t0)


With two cores:

E:\>python fibotest.py
parallel t: 31.300226 seconds
sequential t: 48.070695 seconds


Yes it can!




Sturla Molden



More information about the Python-list mailing list