chan

Chan for Python, lovingly stolen from Go


Keywords
go, chan, channel, select, chanselect, concurrency
License
BSD-3-Clause
Install
pip install chan==0.3.1

Documentation

Go-style Chan for Python

Implements Go's chan type in Python.

Install with pip install chan

Source at http://github.com/stuglaser/pychan

Usage

You can put onto channels, and get from them

c = Chan()

# Thread 1
c.put("Hello")

# Thread 2
print "Heard: %s" % c.get()

Channels can be closed (usually by the sender). Iterating over a channel gives all values until the channel is closed

c = Chan()

# Thread 1
c.put("It's")
c.put("just")
c.put("contradiction")

# Thread 2
for thing in c:
    print "Heard:", thing

You can wait on multiple channels using chanselect. Pass it a list of input channels and another of output channels, and it will return when any of the channels is ready

def fan_in(outchan, input1, input2):
    while True:
        chan, value = chanselect([input1, input2], [])
        if chan == input1:
            outchan.put("From 1: " + str(value))
        else:
            outchan.put("From 2 " + str(value))

You can see more examples in the "examples" directory.

https://nojsstats.appspot.com/UA-41669691-1/github.com