File tree Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Expand file tree Collapse file tree 1 file changed +48
-0
lines changed Original file line number Diff line number Diff line change
1
+ import requests
2
+ from multiprocessing .dummy import Pool
3
+ import time
4
+ from datadiff import diff
5
+
6
+ def getzip (code ):
7
+ try :
8
+ code = str (code )
9
+ url = "https://maps.googleapis.com/maps/api/geocode/json?address={}" .format (code )
10
+ res = requests .get (url ).json ()['results' ]
11
+ if len (res ) < 1 : # Re-try
12
+ print "Retrying"
13
+ return getzip (code )
14
+ iszip = 'postal_code' in res [0 ]['types' ] and "United States" in str (res [0 ]['address_components' ])
15
+ except Exception as e :
16
+ print "In error"
17
+ print e
18
+ iszip = False
19
+ return (code , iszip )
20
+ ziprange = range (94400 , 94420 )
21
+ print "Range is: " + str (len (ziprange ))
22
+
23
+ print "Using one thread"
24
+ start = time .time ()
25
+ syncres = [getzip (c ) for c in ziprange ]
26
+ print "took " + str (time .time () - start )
27
+
28
+ print "Using multiple threads"
29
+ start = time .time ()
30
+
31
+ # Magic
32
+ pool = Pool (10 )
33
+ asyncres = pool .map (getzip , ziprange )
34
+ pool .close ()
35
+ pool .join ()
36
+ asyncres = sorted (asyncres )
37
+ # End of Magic
38
+
39
+ print "took " + str (time .time () - start )
40
+
41
+ # Make sure results are equal
42
+ d = diff (syncres , asyncres )
43
+ if len (d .diffs ) > 0 :
44
+ print "diff is"
45
+ print d
46
+
47
+ for r in asyncres :
48
+ print "Zip code {} is {} US code" .format (r [0 ], "valid" if r [1 ] else "invalid" )
You can’t perform that action at this time.
0 commit comments