James Mills avatar James Mills committed fe3965b

- tmp: Completed experimental sum_primes example (testing concurrency and
distributed computing with circuits).

Comments (0)

Files changed (1)

tmp/sum_primes.py

 #!/usr/bin/env python
 
-import sys
 import math
 
-from circuits import Component, Pool, Task
+from circuits import Component, Debugger, Event, Pool, Task
+
 
 def isprime(n):
     """Returns True if n is prime and False otherwise"""
         i += 1
     return True
 
-def sum_primes(n):
-    """Calculates sum of all primes below given integer n"""
-    return sum([x for x in xrange(2, n) if isprime(x)])
 
-x = sum_primes(100)
+class SumPrimes(Event):
+    """Sum Primes Event"""
+
+    channel = "sum_primes"
+
+
+class App(Component):
+
+    def __init__(self):
+        super(App, self).__init__()
+
+        self._sum = 0
+        self._results = []
+        self._pool = Pool()
+
+    def check(self, value):
+        if value.result and value:
+            self._sum += value.event.args[1]
+
+    def sum_primes(self, n):
+        for x in xrange(n):
+            e = Task(isprime, x)
+            v = self.push(e, target=self._pool)
+            v.onSet = "check", self
+            self.results.append(v)
+
+app = App() + Debugger()
+app.push(SumPrimes(100))
+app.run()
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.