pprocess

examples/simple_managed_map.py

155:970c7d8a5b1b
2009-05-17 Paul Boddie Fixed the get_number_of_cores function to work with /proc/cpuinfo where the "physical id" field is missing. Updated release information.
     1 #!/usr/bin/env python     2      3 """     4 A simple example of parallel computation using a map and managed callables.     5 """     6      7 import pprocess     8 import time     9 #import random    10     11 # Array size and a limit on the number of processes.    12     13 N = 10    14 limit = 10    15 delay = 1    16     17 # Work function and monitoring class.    18     19 def calculate(i, j):    20     21     """    22     A supposedly time-consuming calculation on 'i' and 'j'.    23     """    24     25     #time.sleep(delay * random.random())    26     time.sleep(delay)    27     return i * N + j    28     29 # Main program.    30     31 if __name__ == "__main__":    32     33     t = time.time()    34     35     # Initialise the results using a map with a limit on the number of    36     # channels/processes.    37     38     results = pprocess.Map(limit=limit)    39     40     # Wrap the calculate function and manage it.    41     42     calc = results.manage(pprocess.MakeParallel(calculate))    43     44     # Perform the work.    45     46     print "Calculating..."    47     for i in range(0, N):    48         for j in range(0, N):    49             calc(i, j)    50     51     # Show the results.    52     53     for i in range(0, N):    54         for result in results[i*N:i*N+N]:    55             print result,    56         print    57     58     print "Time taken:", time.time() - t    59     60 # vim: tabstop=4 expandtab shiftwidth=4