2016-05-04 10 views
-1

Ich muss eine große Anzahl von Adressen geocodieren, also arbeite ich daran, dies mit multiprocessing einzurichten. Ich lese parallel geocoding, aber dies adressiert mit geopy. Ich werde stattdessen geocoder verwenden.Python: Multiprocessing zu Geocode-Adressen verwenden

import geocoder 
import multiprocessing as mp 

google_key = 'my_key' 

addresses = ['tampa, florida', 'peroria, illinois', 'augusta, georgia', 
      'hanover, new hampshire', 'burlington, vermont'] 

def geocode_worker(address): 
    geocoder.google(address, key = google_key).latlng 
    return address 

if __name__ == '__main__': 
    pool = mp.Pool(processes = (mp.cpu_count() - 1)) 
    result = pool.map(geocode_worker, addresses) 

Dies gibt die Adressen wie es ist, wo ich die Breite und Länge zurück mit einer bestimmten Stadt will. Ich brauche ein wenig Hilfe, damit alles richtig funktioniert.

+0

Natürlich ist es die Adresse zurückgibt, weil Sie 'haben in Ihrem' geocode_worker' Funktion zurückgeben address'. Möchten Sie stattdessen das Attribut ".latlng" zurückgeben, auf das Sie in der vorherigen Zeile verwiesen haben? – larsks

+0

Das ist zu albern lesen Sie Ihren Code sorgfältig Sie Adresse an die Funktion liefern und die Adresse – PyNEwbie

+0

@larks wie würde ich '.latlng' zurückgeben? Ich versuchte 'address.latlng' – dustin

Antwort

1

Ihre geocode_worker Funktion sollte einfach die Linie
return geocoder.google(address, key = google_key).latlng