Created
February 14, 2018 10:32
-
-
Save lbenka/9c0018039e7ea8053af495a1a83a60f3 to your computer and use it in GitHub Desktop.
Python test code
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
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