[pypy-svn] r24529 - pypy/dist/demo

auc at codespeak.net auc at codespeak.net
Fri Mar 17 18:37:51 CET 2006


Author: auc
Date: Fri Mar 17 18:37:45 2006
New Revision: 24529

Modified:
   pypy/dist/demo/producerconsumer.py
Log:
lazy version of producer consummer


Modified: pypy/dist/demo/producerconsumer.py
==============================================================================
--- pypy/dist/demo/producerconsumer.py	(original)
+++ pypy/dist/demo/producerconsumer.py	Fri Mar 17 18:37:45 2006
@@ -21,6 +21,7 @@
         return sum(Tail, head + a)
     return a
 
+print "eager producer consummer"
 print "before"
 X = newvar()
 S = newvar()
@@ -29,3 +30,34 @@
 print "after"
 
 print S
+
+
+def lgenerate(n, L):
+    """wait-needed version of generate"""
+    print "generator waits on L being needed"
+    wait_needed(L)
+    Tail = newvar()
+    L == (n, Tail)
+    print "generator bound L to", L
+    lgenerate(n+1, Tail)
+
+def lsum(L, a, limit):
+    """this version of sum controls the generator"""
+    print "sum", a
+    if limit > 0:
+        Head, Tail = newvar(), newvar()
+        print "sum waiting on L"
+        Head, Tail = L # or L = (Head, Tail) ... ?
+        return lsum(Tail, a+Head, limit-1)
+    else:
+        return a
+
+print "lazy producer consummer"
+print "before"
+Y = newvar()
+T = newvar()
+uthread(lgenerate, 0, Y)
+T == uthread(lsum, Y, 0, 10)
+print "after"
+
+print T



More information about the Pypy-commit mailing list