[BangPypers] real use case of gevent context switch gevent.sleep(0)
anu sree
anusree.a04 at gmail.com
Sat Jun 20 23:55:31 CEST 2015
Thanks naufal and Krace.
I have tried following code. I have given gevent.sleep(0.1), that means
each greenlet let others to execute 0.1 secoond. But here each greenlet
waiting for others to complete, why? Is it because of greenlet.joinall ?
Here I have created 3 greenlet threads (A, B, C). I think, A is the parent
greenlet, right ? Once C get finished control should goes to B, right ?
But here it going to A.
Please check the ouput.
import gevent
def task(num):
thread_id = id(gevent.getcurrent())
print "Start: ", num, thread_id
for i in range(100000001):
if i == 100000000:
print num + str(i)
gevent.sleep(0.1)
for i in range(100000001):
if i == 100000000:
print num + str(i)
print "End: ", num, thread_id
threads = [gevent.spawn(task, x) for x in ['A', 'B', 'C']]
gevent.joinall(threads)
Output
=======
Start: A 139984038735696
A100000000
Start: B 139984008421616
B100000000
Start: C 139984008421776
C100000000
A100000000
End: A 139984038735696
B100000000
End: B 139984008421616
C100000000
End: C 139984008421776
More information about the BangPypers
mailing list