1# example program that sends object instances in local program
2# as arguments to distributed computation
3class C:
4    def __init__(self, i, n):
5        self.i = i
6        self.n = n
7
8    def show(self):
9        print('%s: %.2f' % (self.i, self.n))
10
11def compute(obj):
12    # obj is an instance of C
13    import time
14    time.sleep(obj.n)
15    obj.show()
16    return obj.n
17
18if __name__ == '__main__':
19    import random, dispy
20    cluster = dispy.JobCluster(compute, depends=[C])
21    jobs = []
22    for i in range(10):
23        c = C(i, random.uniform(1, 3)) # create object of C
24        job = cluster.submit(c) # it is sent to a node for executing 'compute'
25        job.id = c # store this object for later use
26        jobs.append(job)
27    for job in jobs:
28        job() # wait for job to finish
29        print('%s: %.2f / %s' % (job.id.i, job.result, job.stdout))
30