コード例 #1
0
def main():
    joe = boring("Joe")
    ann = boring("Ann")
    for i in range(5):
        print (yield take(joe))
        print (yield take(ann))
    print "You are boring; I'm leaving."
コード例 #2
0
ファイル: go_block.py プロジェクト: ubolonton/twisted-csp
def main():
    chan = go_chan(lazy_echo, 1)
    print (yield take(chan))

    chan = go_chan(lazy_echo, 2)
    yield sleep(1)
    print (yield take(chan))

    yield stop("Done")
コード例 #3
0
 def test_parked_put(self):
     ch = Channel()
     def putting():
         yield sleep(0.005)
         yield put(ch, 42)
     go(putting)
     self.assertEqual((yield take(ch)), 42)
コード例 #4
0
 def test_immediate_puts_and_takes(self):
     ch = Channel(1)
     i = 0
     while i < self.limit:
         i += 1
         yield put(ch, 1)
         yield take(ch)
コード例 #5
0
ファイル: pingpong.py プロジェクト: ubolonton/twisted-csp
def player(name, table):
    while True:
        ball = yield take(table)
        ball.hits += 1
        print name, ball.hits
        yield sleep(0.1)
        yield put(table, ball)
コード例 #6
0
 def test_parked_closed(self):
     ch = Channel()
     def closing():
         yield sleep(0.005)
         ch.close()
     go(closing)
     self.assertEqual((yield take(ch)), CLOSED)
コード例 #7
0
ファイル: closed.py プロジェクト: ubolonton/twisted-csp
def main():
    chan = Channel()
    close(chan)

    print (yield take(chan))

    # This would blows up the stack if the implementation is in
    # correct (e.g. lack of dispatch.run in important places (see
    # Process._continue))
    limit = sys.getrecursionlimit()
    count = 0
    while True:
        count += 1
        yield take(chan)
        if count > limit:
            print "Did not blow the stack"
            break
コード例 #8
0
ファイル: daisy_chain.py プロジェクト: ubolonton/twisted-csp
def main():
    n = 100000
    leftmost = Channel()
    right = leftmost
    left = leftmost
    for i in range(n):
        right = Channel()
        go(f, left, right)
        left = right

    def start(c):
        yield put(c, 1)

    go(start, right)
    print (yield take(leftmost))
コード例 #9
0
 def test_immediate_buffered(self):
     ch = Channel(1)
     yield put(ch, 42)
     self.assertEqual((yield take(ch)), 42)
コード例 #10
0
 def taking():
     yield sleep(0.005)
     yield take(ch)
コード例 #11
0
 def test_immediate_put(self):
     ch = Channel()
     def putting():
         yield put(ch, 42)
     go(putting)
     self.assertEqual((yield take(ch)), 42)
コード例 #12
0
ファイル: blocking.py プロジェクト: ubolonton/twisted-csp
def main():
    chan = Channel()
    print "will block"
    yield put(chan, "channel")
    # Will not get here
    print (yield take(chan))
コード例 #13
0
 def taking():
     yield take(ch)
コード例 #14
0
 def test_returning_CLOSED(self):
     def ident(x):
         yield stop(x)
     ch = go_channel(ident, CLOSED)
     self.assertEqual((yield take(ch)), CLOSED, "CLOSED is delivered")
     self.assertEqual(ch.is_closed(), True, "output channel is closed")
コード例 #15
0
 def test_taking_from_closed_channel(self):
     i = 0
     while i < self.limit:
         i += 1
         yield take(self.ch)
コード例 #16
0
ファイル: boring.py プロジェクト: ubolonton/twisted-csp
def main():
    b = boring("boring!")
    for i in range(5):
        print "You say: \"%s\"" % (yield take(b))
    print "You are boring; I'm leaving."
コード例 #17
0
 def test_immediate_closed(self):
     ch = Channel()
     ch.close()
     self.assertEqual((yield take(ch)), CLOSED)
コード例 #18
0
ファイル: buffered.py プロジェクト: ubolonton/twisted-csp
def main():
    chan = Channel(2)
    yield put(chan, "buffered")
    yield put(chan, "channel")
    print (yield take(chan))
    print (yield take(chan))
コード例 #19
0
ファイル: daisy_chain.py プロジェクト: ubolonton/twisted-csp
def f(left, right):
    yield put(left, 1 + (yield take(right)))
コード例 #20
0
def main():
    c = fan_in(boring("Joe"), boring("Ann"))
    for i in range(10):
        print (yield take(c))
    print "You are boring; I'm leaving."
コード例 #21
0
 def test_returning_value(self):
     def ident(x):
         yield stop(x)
     ch = go_channel(ident, 42)
     self.assertEqual((yield take(ch)), 42, "returned value is delivered")
     self.assertEqual(ch.is_closed(), True, "output channel is closed")
コード例 #22
0
 def collect(i):
     while True:
         yield put(c, (yield take(i)))