Chan for Python, lovingly stolen from Go
Implements Go’s chan type in Python.
Install with pip install chan
Source at http://github.com/stuglaser/pychan
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.