Skip to main content

This module provides a simple facility to the goal-oriented programming paradigm.

Project description

This module provides a simple facility to the goal-oriented programming paradigm.

In goal-oriented programming, the programmer subdivides the problem in minor goals,
with dependencies between them, and just pass them to a scheduler that will
execute them asyncronously and in the correct order.

===

In this implementation every goal function receives three arguments:
name -- the unique name of the goal
args -- the results from its dependencies
results -- a dictionary where it can write a return value
(readable by subcessive goals)

The test cointained in the module file illustrates how the module must be used.

===

An example of usage:

"""Usage example"""

def goal1(name, args, results):
print name, args
sleep(1)
results[name] = name + " completed!"

def goal2(name, args, results):
print name, args
sleep(2)
results[name] = name + " completed!"

def goal3(name, args, results):
print name, args
sleep(2)
results[name] = name + " completed!"

def goal4(name, args, results):
print name, args
sleep(1)
results[name] = name + " completed!"

def goal5(name, args, results):
print name, args
sleep(3)
results[name] = name + " completed!"

def goal6(name, args, results):
print name, args
sleep(1)
results[name] = name + " completed!"

# goals to run and their dependencies
schedule_goals( goal1 = { 'target': goal1 },
goal2 = { 'target': goal2 },
goal3 = { 'target': goal3, 'deps': ['goal1', 'goal2'] },
goal4 = { 'target': goal4, 'deps': ['goal3'] },
goal5 = { 'target': goal5, 'deps': ['goal2'] },
goal6 = { 'target': goal6 } )

===

Output of the example:

$ python goal_oriented.py

goal6 {}
goal2 {}
goal1 {}
goal5 {'goal2': 'goal2 completed!'}
goal3 {'goal2': 'goal2 completed!', 'goal1': 'goal1 completed!'}
goal4 {'goal3': 'goal3 completed!'}

real 0m5.018s
user 0m0.104s
sys 0m0.052s

===

Have fun... :)

Project details


Release history Release notifications

This version
History Node

0.1

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Filename, size & hash SHA256 hash help File type Python version Upload date
goal_oriented-0.1.tar.gz (2.0 kB) Copy SHA256 hash SHA256 Source None

Supported by

Elastic Elastic Search Pingdom Pingdom Monitoring Google Google BigQuery Sentry Sentry Error logging AWS AWS Cloud computing DataDog DataDog Monitoring Fastly Fastly CDN SignalFx SignalFx Supporter DigiCert DigiCert EV certificate StatusPage StatusPage Status page