Skip to content

Instantly share code, notes, and snippets.

@pydong
Last active July 12, 2019 11:11
Show Gist options
  • Star 1 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save pydong/8106272 to your computer and use it in GitHub Desktop.
Save pydong/8106272 to your computer and use it in GitHub Desktop.
gevent semaphore example (from http://sdiehl.github.io/gevent-tutorial/)
# from http://sdiehl.github.io/gevent-tutorial/
from gevent import sleep
from gevent.pool import Pool
from gevent.coros import BoundedSemaphore
sem = BoundedSemaphore(4) # only allows 4 greenlets at one time, others must wait until one is released
def worker1(n):
sem.acquire()
print('Worker %i acquired semaphore' % n)
sleep(0)
sem.release()
print('Worker %i released semaphore' % n)
def worker2(n):
with sem:
print('Worker %i acquired semaphore' % n)
sleep(0)
print('Worker %i released semaphore' % n)
pool = Pool()
pool.map(worker1, xrange(1,5))
pool.map(worker2, xrange(15,25))
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment