def test2(obj): from pathos.pp import ParallelPythonPool p = ParallelPythonPool(2) x = [1, 2, 3] assert map(obj, x) == p.map(obj, x)
#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 1997-2014 California Institute of Technology. # License: 3-clause BSD. The full license text is available at: # - http://trac.mystic.cacr.caltech.edu/project/pathos/browser/pathos/LICENSE from pathos.pp import stats from pathos.pp import ParallelPythonPool as Pool pool = Pool() def host(id): import socket import time time.sleep(1.0) return "Rank: %d -- %s" % (id, socket.gethostname()) print "Evaluate 10 items on 2 cpus" #FIXME: reset lport below pool.ncpus = 2 pool.servers = ('localhost:5653',) res5 = pool.map(host, range(10)) print pool print '\n'.join(res5) print stats() print '' # end of file
_d = [delay]*len(_x) from pathos.python import PythonSerial as PS basic = PS() print basic start = time.time() res = basic.map(busy_add, _x, _y, _d) print "time to queue:", time.time() - start start = time.time() _basic = list(res) print "time to results:", time.time() - start print "" from pathos.pp import ParallelPythonPool as PPP #from pathos.pp import stats pp_pool = PPP(4, servers=('localhost:5653','localhost:2414')) print pp_pool start = time.time() res = pp_pool.map(busy_add, _x, _y, _d) print "time to queue:", time.time() - start start = time.time() _pp_pool = list(res) print "time to results:", time.time() - start #print stats() assert _basic == _pp_pool print "" from pathos.multiprocessing import ProcessingPool as MPP mp_pool = MPP(4) print mp_pool
#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 1997-2014 California Institute of Technology. # License: 3-clause BSD. The full license text is available at: # - http://trac.mystic.cacr.caltech.edu/project/pathos/browser/pathos/LICENSE from pathos.pp import stats from pathos.pp import ParallelPythonPool as Pool pool = Pool() def host(id): import socket import time time.sleep(1.0) return "Rank: %d -- %s" % (id, socket.gethostname()) print "Evaluate 10 items on 2 cpus" #FIXME: reset lport below pool.ncpus = 2 pool.servers = ('localhost:5653', ) res5 = pool.map(host, range(10)) print pool print '\n'.join(res5) print stats() print '' # end of file
#!/usr/bin/env python from pathos.pp import stats from pathos.pp import ParallelPythonPool as Pool pool = Pool() def host(id): import socket return "Rank: %d -- %s" % (id, socket.gethostname()) print "Evaluate 10 items on 1 cpu" pool.ncpus = 1 res3 = pool.map(host, range(10)) print pool print '\n'.join(res3) print stats() print "Evaluate 10 items on 2 cpus" pool.ncpus = 2 res5 = pool.map(host, range(10)) print pool print '\n'.join(res5) print stats() # end of file
def test_ppmap(obj): from pathos.pp import ParallelPythonPool p = ParallelPythonPool(2) x = [1, 2, 3] assert map(obj, x) == p.map(obj, x)
#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 1997-2014 California Institute of Technology. # License: 3-clause BSD. The full license text is available at: # - http://trac.mystic.cacr.caltech.edu/project/pathos/browser/pathos/LICENSE """ example of using the 'raw' distributed parallel mapper To run: python pp_map.py """ from pathos.pp import ParallelPythonPool as Pool pool = Pool() if __name__ == '__main__': def add(x, y, z): """Add three values""" return x + y + z def busybeaver(x): """This can take a while""" for num in range(1000000): x = x + num return x # Immediate evaluation example import time start = time.time() results = pool.map(busybeaver, range(10))
#!/usr/bin/env python # # Author: Mike McKerns (mmckerns @caltech and @uqfoundation) # Copyright (c) 1997-2014 California Institute of Technology. # License: 3-clause BSD. The full license text is available at: # - http://trac.mystic.cacr.caltech.edu/project/pathos/browser/pathos/LICENSE from pathos.pp import stats from pathos.pp import ParallelPythonPool as Pool pool = Pool() def host(id): import socket return "Rank: %d -- %s" % (id, socket.gethostname()) print "Evaluate 10 items on 1 cpu" pool.ncpus = 1 res3 = pool.map(host, range(10)) print pool print '\n'.join(res3) print stats() print "Evaluate 10 items on 2 cpus" pool.ncpus = 2 res5 = pool.map(host, range(10)) print pool print '\n'.join(res5) print stats()
from numpy import sin return sin(x - xp) # print the input to screen x = np.arange(N * nodes, dtype=np.float64) xp = np.arange(N * nodes, dtype=np.float64)[::-1] print("Input: %s\n" % x) # map sin_diff to the workers, then print to screen print("Running serial python ...") y = map(sin_diff, x, xp) print("Output: %s\n" % np.asarray(y)) # map sin_diff to the workers, then print to screen print("Running mpi4py on %d cores..." % nodes) y = MpiPool(nodes).map(sin_diff, x, xp) print("Output: %s\n" % np.asarray(y)) # map sin_diff to the workers, then print to screen print("Running multiprocesing on %d processors..." % nodes) y = ProcessingPool(nodes).map(sin_diff, x, xp) print("Output: %s\n" % np.asarray(y)) # map sin_diff to the workers, then print to screen print("Running parallelpython on %d cpus..." % nodes) y = ParallelPythonPool(nodes).map(sin_diff, x, xp) print("Output: %s\n" % np.asarray(y)) # EOF
"""sin squared of all data""" import numpy as np return np.sin(xi)**2 # print the input to screen x = np.arange(N * nodes, dtype=np.float64) print("Input: %s\n" % x) # run sin2 in series, then print to screen print("Running serial python ...") y = map(sin2, x) print("Output: %s\n" % np.asarray(y)) # map sin2 to the workers, then print to screen print("Running mpi4py on %d cores..." % nodes) y = MpiPool(nodes).map(sin2, x) print("Output: %s\n" % np.asarray(y)) # map sin2 to the workers, then print to screen print("Running multiprocesing on %d processors..." % nodes) y = ProcessingPool(nodes).map(sin2, x) print("Output: %s\n" % np.asarray(y)) # map sin2 to the workers, then print to screen print("Running parallelpython on %d cpus..." % nodes) y = ParallelPythonPool(nodes).map(sin2, x) print("Output: %s\n" % np.asarray(y)) # EOF