1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65
|
#! /usr/bin/env python
import sys
import ndcctools.taskvine as vine
port_file = None
try:
port_file = sys.argv[1]
except IndexError:
sys.stderr.write("Usage: {} PORTFILE\n".format(sys.argv[0]))
raise
# Define a function to invoke remotely
def my_sum(x, y, negate=False):
from operator import add, mul
f = 1
if negate:
f = -1
s = mul(f, add(x, y))
return s
# Create a new queue
queue = vine.Manager(port=[9123, 9130])
print("listening on port {}".format(queue.port))
with open(port_file, "w") as f:
f.write(str(queue.port))
# Submit several tasks for execution:
print("submitting tasks...")
for value in range(1, 10):
task = vine.PythonTask(my_sum, value, value)
task.set_cores(1)
queue.submit(task)
# add task outputs
positive_sum = 0
while not queue.empty():
task = queue.wait(5)
if task:
print("task {} completed with result '{}': {}".format(task.id, task.result, task.output))
positive_sum += task.output
# Submit several tasks for execution:
for value in range(1, 10):
task = vine.PythonTask(my_sum, value, value, negate=True)
task.set_cores(1)
queue.submit(task)
# add task outputs
negative_sum = 0
while not queue.empty():
task = queue.wait(5)
if task:
print("task {} completed with result '{}': {}".format(task.id, task.result, task.output))
negative_sum += task.output
task = None
assert positive_sum == (-1 * negative_sum)
# vim: set sts=4 sw=4 ts=4 expandtab ft=python:
|