Release v0.2.
pyChan implements Go’s chan type in Python, making concurrent programming in Python simple.
Install using pip install chan
Source code at http://github.com/stuglaser/pychan
You can use Chan.put() to place items onto a Chan, and Chan.get() to receive 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.
Contents: