Hilf mir, diesen Code zu optimieren:
doe = DistanceOnEarth()
def get_mdr_distance(row):
    route_geom = shapely.wkt.loads(row.provider_route)
    route_points = route_geom.coords[:]
    mdr_points = []
    mdr_distance = 0
    for points in split_list(route_points):
        point_1, point_2 = points
        line = shapely.geometry.LineString(points)
        is_mdr = (
            requests.post(
                MDR_URL,
                data=line.wkt,
                headers={"accept": "*/*", "Content-Type": "text/plain"},
            ).content
            == b"true"
        )
        if is_mdr:
            mdr_points.extend(points)
        else:
            if len(mdr_points) > 0:
                mdr_points.extend([point_1])
                mdr_distance += doe.get_4326_geometry_length_in_m(shapely.LineString(mdr_points))
                mdr_points = []
    if len(mdr_points) > 0:
        mdr_distance += doe.get_4326_geometry_length_in_m(shapely.LineString(mdr_points))
    return mdr_distance
Eine Möglichkeit, diesen Code zu optimieren, besteht darin, die Anzahl der Anfragen an den Server zu reduzieren und die Schleife umzustrukturieren, um sie effizienter zu machen. Hier ist der modifizierte Code:

```python

    import requests
    import shapely.wkt
    import shapely.geometry
    from distance_on_earth import DistanceOnEarth  # Angenommen, dies ist der richtige Import
    
    doe = DistanceOnEarth()

    def get_mdr_distance(row):
        route_geom = shapely.wkt.loads(row.provider_route)
        route_points = route_geom.coords[:]
        
        def chunks(lst, n=2):
            for i in range(0, len(lst) - 1, n - 1):
                yield lst[i:i + n]
        
        line_segments = list(chunks(route_points))
        request_lines = [shapely.geometry.LineString(pair).wkt for pair in line_segments]
        request_payload = "
".join(request_lines)
        
        response = requests.post(
            MDR_URL,
            data=request_payload,
            headers={"accept": "/", "Content-Type": "text/plain"},
        )
    
        is_mdr_list = response.content.decode().split('
')
        
        mdr_points = []
        mdr_distance = 0
        for points, is_mdr in zip(line_segments, is_mdr_list):
            point_1, point_2 = points
            if is_mdr == "true":
                mdr_points.extend(points)
            else:
                if mdr_points:
                    mdr_points.append(point_1)
                    mdr_distance += doe.get_4326_geometry_length_in_m(shapely.geometry.LineString(mdr_points))
                    mdr_points = []
        
        if mdr_points:
            mdr_distance += doe.get_4326_geometry_length_in_m(shapely.geometry.LineString(mdr_points))
        
        return mdr_distance
```

Hier ist eine Zusammenfassung der vorgenommenen Änderungen:

1. Eine Hilfsfunktion `chunks` wurde erstellt, um die Liste der Routenpunkte in Paare aufzuteilen.
2. Alle LineStrings wurden zu einer einzigen Anfrage-Payload zusammengefasst, um die Anzahl der Anfragen an den Server zu reduzieren.
3. Die Antwortinhalte wurden analysiert, um eine Liste der `is_mdr`-Werte zu erhalten.
4. Die Schleife wurde modifiziert, um die `zip`-Funktion zu verwenden, um gleichzeitig über `line_segments` und `is_mdr_list` zu iterieren.

Dies sollte die Leistung des Codes verbessern, indem die Anzahl der Anfragen an den Server reduziert und die Schleifenlogik vereinfacht wird. Stellen Sie sicher, dass Sie den modifizierten Code testen, um sicherzustellen, dass er Ihren Anforderungen entspricht.