Skip to content

Instantly share code, notes, and snippets.

@lbenka
Created February 14, 2018 10:32
Show Gist options
  • Save lbenka/9c0018039e7ea8053af495a1a83a60f3 to your computer and use it in GitHub Desktop.
Save lbenka/9c0018039e7ea8053af495a1a83a60f3 to your computer and use it in GitHub Desktop.
Python test code
from gevent import monkey
monkey.patch_all()
import gevent
from multiprocessing import Pool
from urllib import urlencode
import requests
import time
from threading import Thread
from contextlib import closing
params = {
'APPID': '---',
'q': 'London'
}
def get_weather(_):
r = requests.get("http://api.openweathermap.org/data/2.5/weather", params=params)
time.sleep(1)
print(r)
try:
return r.json()
except Exception as e:
print(e)
def get_for(counter):
data = []
for c in counter:
response = get_weather(c)
data.append(response)
return data
def get_multi(counter):
with closing(Pool(processes=5)) as pool:
data = pool.map(get_weather, counter)
return data
def get_threads(counter):
threads = []
for i in counter:
t = Thread(target=get_weather, args=((i,)))
threads.append(t)
t.start()
return [t.join() for t in threads]
def get_gevent(counter):
jobs = [gevent.spawn(get_weather, c) for c in counter]
gevent.joinall(jobs, timeout=2)
return [job.value for job in jobs]
# data = get_for(range(10))
# data = get_threads(range(500))
# data = get_multi(range(50))
data = get_gevent(range(500))
print(data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment