Skip to content

Instantly share code, notes, and snippets.

@mohclips
Created August 2, 2017 16:45
Show Gist options
  • Save mohclips/2472e6cba1c5d4e3184a45e90ba98383 to your computer and use it in GitHub Desktop.
Save mohclips/2472e6cba1c5d4e3184a45e90ba98383 to your computer and use it in GitHub Desktop.
import gevent
from gevent import monkey, pool
monkey.patch_all()
import random
import time
MAX_SLEEP_TIME=4
POOL_SIZE=20
ITEMS_IN_LIST=155
sleep_total=0
jobs = []
p = pool.Pool(POOL_SIZE)
start = time.time()
tic = lambda: 'at %1.1f seconds' % (time.time() - start)
def worker(name):
global sleep_total
sleep_time = random.randint(1, MAX_SLEEP_TIME)
print('Worker doing item %s sleepy time %s' % (name, sleep_time))
time.sleep(sleep_time)
sleep_total = sleep_total + sleep_time
#
# Main
#
print('Started Polling: %s' % tic())
# load up our things to do, into a list as we spawn them
for x in xrange(1,ITEMS_IN_LIST):
jobs.append(
p.spawn(worker, x)
)
# do stuff
gevent.joinall(jobs)
print('Ended Polling: %s' % tic())
print "Sleep total:", sleep_total, "how long we should have waited if synchronously run"
Started Polling: at 0.0 seconds
Worker doing item 1 sleepy time 1
Worker doing item 2 sleepy time 3
Worker doing item 3 sleepy time 1
Worker doing item 4 sleepy time 3
Worker doing item 5 sleepy time 1
.
.
.
Worker doing item 144 sleepy time 1
Worker doing item 145 sleepy time 3
Worker doing item 146 sleepy time 4
Worker doing item 147 sleepy time 4
Worker doing item 148 sleepy time 2
Worker doing item 149 sleepy time 2
Worker doing item 150 sleepy time 3
Worker doing item 151 sleepy time 4
Worker doing item 152 sleepy time 3
Worker doing item 153 sleepy time 1
Worker doing item 154 sleepy time 1
Ended Polling: at 21.0 seconds
Sleep total: 376 how long we should have waited if synchronously run
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment