codepad
[
create a new paste
]
login
|
about
Language:
C
C++
D
Haskell
Lua
OCaml
PHP
Perl
Plain Text
Python
Ruby
Scheme
Tcl
import random MAX_Q_LEN = 5 Q = [] class Coroutine: def __init__(self): self._generator = None def resume(self, value=None): '''Passes value to coroutine, either as initial parameter to callable or as return value of yield''' if self._generator is None: self._generator = self.run() return self._generator.send(value) def stop(self): 'Stops the coroutine' self._generator.close() class Producer(Coroutine): def run(self): while True: while len(Q) < MAX_Q_LEN: Q.append(random.random()) yield class Consumer(Coroutine): def run(self): while True: while len(Q) > 0: print(Q.pop()) yield if __name__ == "__main__": c = Consumer() p = Producer() while True: p.resume() c.resume()
Private
[
?
]
Run code
Submit