Spawning a green thread
$ python spawn.py
<eventlet.greenthread.GreenThread object at 0xe77870>
1 + 2 = 3
Cooperative yielding
$ python co-op.py
func2
func1
$ python interleave.py
main: i=0
foo(A): i=0
foo(B): i=0
main: i=1
foo(A): i=1
foo(B): i=1
main: i=2
foo(A): i=2
foo(B): i=2
Not so cooperative
$ python un-co-op.py
main: i=0
main: i=1
main: i=2
foo(A): i=0
foo(A): i=1
foo(A): i=2
foo(B): i=0
foo(B): i=1
foo(B): i=2
Synchronization queue
$ python queue.py
func1 hello
func2 world
Sychronization event
$ python waiter.py
sending
sent
waiter
$ python waiter2.py
main: before send()
waiter: before wait()
main: after send()
waiter: after wait()
main: at end
Green pools
$ python greenpool.py
execute 1
execute 2
execute 3
1
2
execute 4
3
4
Green sockets
Start the echo server:
$ python greensocket.py
server listening on port 6000
then start another terminal and any lines typed are echoed:
$ nc localhost 6000
something from client1
something from client1
Now the point is that the program is not blocked handling that socket. So start another terminal:
$ nc localhost 6000
something from client2
something from client2
Then press control-d in each nc to disconnect. The entire server output is:
$ python greensocket.py
server listening on port 6000
client connected
echoed something from client1
client connected
echoed something from client2
disconnected
disconnected