pyosrm
pyosrm copied to clipboard
Memory leak
Hi:
Thank you so much for providing an amazing package.
Use this package according to the method you said. When the route method is executed multiple times, it is found that the memory keeps increasing. I don't know if you have encountered this situation.
Looking forward to your reply!
Hello @ZhiWeiCui, much sorry for the delay. I will be supporting this package again, and will look this up. I haven't encountered this situation, but will try to reproduce and debug it as soon as possible.
Thanks for letting me know.
Thanks, that really helps. I will take a look.
This question has really bothered me for a long time. I adjusted my test script, and attach my test results.
Thank you again for your attention!
import numpy as np
from collections import namedtuple
import subprocess, os, re, sys
import datetime
# from osrmcpy import OSRM, Coordinate
from pyosrm import PyOSRM, Status
# from PyOSRM import PyOSRM
pid = os.getpid()
def randomly_location(n,
extents=None,
center=(39.916042, 116.401969),
box_size=10):
Location = namedtuple('Location', ['lat', 'lon'])
if extents is not None:
#: Location[lat,lon]: the centre point of the area.
center = Location(extents['urcrnrlat'] - 0.5 * (extents['urcrnrlat'] - extents['llcrnrlat']),
extents['urcrnrlon'] - 0.5 * (extents['urcrnrlon'] - extents['llcrnrlon']))
(clat, clon) = Location(center[0], center[1])
else:
#: Location[lat,lon]: the centre point of the area.
(clat, clon) = Location(center[0], center[1])
rad_earth = 6367 # km
circ_earth = np.pi * rad_earth
#: The lower left and upper right points
extents = {
'llcrnrlon': (clon - 180 * box_size / (circ_earth * np.cos(np.deg2rad(clat)))),
'llcrnrlat': clat - 180 * box_size / circ_earth,
'urcrnrlon': (clon + 180 * box_size / (circ_earth * np.cos(np.deg2rad(clat)))),
'urcrnrlat': clat + 180 * box_size / circ_earth
}
stdv = 6 # the number of standard deviations 99.9% will be within +-3
lats = (extents['llcrnrlat'] + np.random.randn(n) * (extents['urcrnrlat'] - extents['llcrnrlat']) / stdv)
lons = (extents['llcrnrlon'] + np.random.randn(n) * (extents['urcrnrlon'] - extents['llcrnrlon']) / stdv)
all_nodes_location = dict(zip(range(n), [Location(round(one[0], 6), round(one[1], 6)) for one in zip(lats, lons)]))
return all_nodes_location
def convert_size(size):
if size <1024:
return size
elif (size >= 1024) and (size < (1024 * 1024)):
return "%.2f KB"%(size/1024)
elif (size >= (1024*1024)) and (size < (1024*1024*1024)):
return "%.2f MB"%(size/(1024*1024))
else:
return "%.2f GB"%(size/(1024*1024*1024))
def process_info(pid):
res = subprocess.getstatusoutput('ps aux|grep ' + str(pid))[1].split('\n')[0]
p = re.compile(r'\s+')
l = p.split(res)
info = {'user': l[0],
'pid': l[1],
'cpu': l[2],
'mem': l[3],
'vsa': convert_size(int(l[4])*1024),
'rss': convert_size(int(l[5])*1024),
'start_time': l[6]}
return info
if __name__ == '__main__':
# location
number = 100
location_start = randomly_location(number)
location_end = randomly_location(number)
# osrmcpy
# DATA_DIR = '/mnt/d/Data/osrm/bicycle/ch'
# OSRM_DATASET = os.path.join(DATA_DIR, 'china-latest.osrm')
# router = OSRM(OSRM_DATASET.encode('utf-8'), contraction=True)
# pyosrm
# router = PyOSRM("/mnt/d/Data/osrm/bicycle/ch/china-latest.osrm")
# router = PyOSRM("/mnt/d/Data/osrm/bicycle/mld/china-latest.osrm", algorithm="MLD")
router = PyOSRM(use_shared_memory=True, algorithm='CH')
# cPyOSRM
# router = PyOSRM()
for i, _ in enumerate(zip(location_start.values(), location_end.values())):
start, end = _
start_time = datetime.datetime.now()
# osrmcpy
# start = Coordinate(id=None, longitude=start[1], latitude=start[0])
# end = Coordinate(id=None, longitude=end[1], latitude=end[0])
# result = router.table([start, end])
# pyosrm
result = router.route([start[::-1], end[::-1]])
# router.route([start[::-1], end[::-1]])
# cPyOSRM
# output = np.array((1, 1), dtype=np.float32)
# router.table([start[1], end[1]],
# [start[0], end[0]],
# [0], [1],
# output)
duration_Router = (datetime.datetime.now() - start_time).total_seconds()
info = process_info(pid)
info['duration'] = duration_Router
# info['distance'] = round(result.json()['routes'][0]['distance']/1000, 3)
info['router_size'] = sys.getsizeof(router)
info['number_iter'] = i
info['result'] = result.json()['code']
# del result
print(info)
# valgrind --tool=memcheck --leak-check=full --track-origins=yes --leak-check=yes --log-file=memory_leak.log python ./tests/memory_leak.py
Out:
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '171', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '36.73 MB', 'start_time': 'pts/21', 'duration': 0.020575, 'router_size': 24, 'number_iter': 0, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '171', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '40.69 MB', 'start_time': 'pts/21', 'duration': 0.001956, 'router_size': 24, 'number_iter': 1, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '171', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '41.60 MB', 'start_time': 'pts/21', 'duration': 0.000759, 'router_size': 24, 'number_iter': 2, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '172', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '44.61 MB', 'start_time': 'pts/21', 'duration': 0.00515, 'router_size': 24, 'number_iter': 3, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '172', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '45.21 MB', 'start_time': 'pts/21', 'duration': 0.000643, 'router_size': 24, 'number_iter': 4, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '172', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '45.90 MB', 'start_time': 'pts/21', 'duration': 0.003929, 'router_size': 24, 'number_iter': 5, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '172', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '46.21 MB', 'start_time': 'pts/21', 'duration': 0.00042, 'router_size': 24, 'number_iter': 6, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '47.53 MB', 'start_time': 'pts/21', 'duration': 0.001331, 'router_size': 24, 'number_iter': 7, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '47.79 MB', 'start_time': 'pts/21', 'duration': 0.000381, 'router_size': 24, 'number_iter': 8, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '48.09 MB', 'start_time': 'pts/21', 'duration': 0.000352, 'router_size': 24, 'number_iter': 9, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '49.09 MB', 'start_time': 'pts/21', 'duration': 0.003555, 'router_size': 24, 'number_iter': 10, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '49.46 MB', 'start_time': 'pts/21', 'duration': 0.000554, 'router_size': 24, 'number_iter': 11, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '173', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '49.66 MB', 'start_time': 'pts/21', 'duration': 0.000529, 'router_size': 24, 'number_iter': 12, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '174', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '49.91 MB', 'start_time': 'pts/21', 'duration': 0.00362, 'router_size': 24, 'number_iter': 13, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '174', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '50.20 MB', 'start_time': 'pts/21', 'duration': 0.000694, 'router_size': 24, 'number_iter': 14, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '174', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '50.87 MB', 'start_time': 'pts/21', 'duration': 0.007175, 'router_size': 24, 'number_iter': 15, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '174', 'mem': '0.1', 'vsa': '6.63 GB', 'rss': '50.96 MB', 'start_time': 'pts/21', 'duration': 0.000553, 'router_size': 24, 'number_iter': 16, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '174', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '51.14 MB', 'start_time': 'pts/21', 'duration': 0.000729, 'router_size': 24, 'number_iter': 17, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '175', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '52.66 MB', 'start_time': 'pts/21', 'duration': 0.002889, 'router_size': 24, 'number_iter': 18, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '175', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '53.36 MB', 'start_time': 'pts/21', 'duration': 0.000807, 'router_size': 24, 'number_iter': 19, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '176', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '53.39 MB', 'start_time': 'pts/21', 'duration': 0.000524, 'router_size': 24, 'number_iter': 20, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '176', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '53.48 MB', 'start_time': 'pts/21', 'duration': 0.000713, 'router_size': 24, 'number_iter': 21, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '176', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '53.71 MB', 'start_time': 'pts/21', 'duration': 0.000678, 'router_size': 24, 'number_iter': 22, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '176', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '54.14 MB', 'start_time': 'pts/21', 'duration': 0.000614, 'router_size': 24, 'number_iter': 23, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '176', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '54.73 MB', 'start_time': 'pts/21', 'duration': 0.004057, 'router_size': 24, 'number_iter': 24, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.14 MB', 'start_time': 'pts/21', 'duration': 0.001186, 'router_size': 24, 'number_iter': 25, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.21 MB', 'start_time': 'pts/21', 'duration': 0.000453, 'router_size': 24, 'number_iter': 26, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.35 MB', 'start_time': 'pts/21', 'duration': 0.000562, 'router_size': 24, 'number_iter': 27, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.35 MB', 'start_time': 'pts/21', 'duration': 0.000326, 'router_size': 24, 'number_iter': 28, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.38 MB', 'start_time': 'pts/21', 'duration': 0.00048, 'router_size': 24, 'number_iter': 29, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.41 MB', 'start_time': 'pts/21', 'duration': 0.000508, 'router_size': 24, 'number_iter': 30, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '177', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '56.96 MB', 'start_time': 'pts/21', 'duration': 0.000637, 'router_size': 24, 'number_iter': 31, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '58.35 MB', 'start_time': 'pts/21', 'duration': 0.004588, 'router_size': 24, 'number_iter': 32, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '58.41 MB', 'start_time': 'pts/21', 'duration': 0.000431, 'router_size': 24, 'number_iter': 33, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '58.50 MB', 'start_time': 'pts/21', 'duration': 0.000411, 'router_size': 24, 'number_iter': 34, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.04 MB', 'start_time': 'pts/21', 'duration': 0.000885, 'router_size': 24, 'number_iter': 35, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.30 MB', 'start_time': 'pts/21', 'duration': 0.000496, 'router_size': 24, 'number_iter': 36, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.43 MB', 'start_time': 'pts/21', 'duration': 0.000669, 'router_size': 24, 'number_iter': 37, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '178', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.45 MB', 'start_time': 'pts/21', 'duration': 0.000311, 'router_size': 24, 'number_iter': 38, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.56 MB', 'start_time': 'pts/21', 'duration': 0.000586, 'router_size': 24, 'number_iter': 39, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.59 MB', 'start_time': 'pts/21', 'duration': 0.000418, 'router_size': 24, 'number_iter': 40, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.60 MB', 'start_time': 'pts/21', 'duration': 0.00039, 'router_size': 24, 'number_iter': 41, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.89 MB', 'start_time': 'pts/21', 'duration': 0.000649, 'router_size': 24, 'number_iter': 42, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '59.96 MB', 'start_time': 'pts/21', 'duration': 0.000449, 'router_size': 24, 'number_iter': 43, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '179', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '60.00 MB', 'start_time': 'pts/21', 'duration': 0.000492, 'router_size': 24, 'number_iter': 44, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '60.00 MB', 'start_time': 'pts/21', 'duration': 0.000271, 'router_size': 24, 'number_iter': 45, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '60.64 MB', 'start_time': 'pts/21', 'duration': 0.000981, 'router_size': 24, 'number_iter': 46, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '61.25 MB', 'start_time': 'pts/21', 'duration': 0.000769, 'router_size': 24, 'number_iter': 47, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '61.58 MB', 'start_time': 'pts/21', 'duration': 0.000949, 'router_size': 24, 'number_iter': 48, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '61.85 MB', 'start_time': 'pts/21', 'duration': 0.000743, 'router_size': 24, 'number_iter': 49, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '61.91 MB', 'start_time': 'pts/21', 'duration': 0.00051, 'router_size': 24, 'number_iter': 50, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '180', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.16 MB', 'start_time': 'pts/21', 'duration': 0.000503, 'router_size': 24, 'number_iter': 51, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '181', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.20 MB', 'start_time': 'pts/21', 'duration': 0.000464, 'router_size': 24, 'number_iter': 52, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '181', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.35 MB', 'start_time': 'pts/21', 'duration': 0.000757, 'router_size': 24, 'number_iter': 53, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.57 MB', 'start_time': 'pts/21', 'duration': 0.002555, 'router_size': 24, 'number_iter': 54, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.64 MB', 'start_time': 'pts/21', 'duration': 0.000548, 'router_size': 24, 'number_iter': 55, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.76 MB', 'start_time': 'pts/21', 'duration': 0.000563, 'router_size': 24, 'number_iter': 56, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.77 MB', 'start_time': 'pts/21', 'duration': 0.000527, 'router_size': 24, 'number_iter': 57, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.88 MB', 'start_time': 'pts/21', 'duration': 0.00072, 'router_size': 24, 'number_iter': 58, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '182', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '62.93 MB', 'start_time': 'pts/21', 'duration': 0.000682, 'router_size': 24, 'number_iter': 59, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.55 MB', 'start_time': 'pts/21', 'duration': 0.000935, 'router_size': 24, 'number_iter': 60, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.64 MB', 'start_time': 'pts/21', 'duration': 0.000718, 'router_size': 24, 'number_iter': 61, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.65 MB', 'start_time': 'pts/21', 'duration': 0.000435, 'router_size': 24, 'number_iter': 62, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.70 MB', 'start_time': 'pts/21', 'duration': 0.000447, 'router_size': 24, 'number_iter': 63, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.82 MB', 'start_time': 'pts/21', 'duration': 0.000673, 'router_size': 24, 'number_iter': 64, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '183', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.89 MB', 'start_time': 'pts/21', 'duration': 0.000493, 'router_size': 24, 'number_iter': 65, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.93 MB', 'start_time': 'pts/21', 'duration': 0.000218, 'router_size': 24, 'number_iter': 66, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.94 MB', 'start_time': 'pts/21', 'duration': 0.000379, 'router_size': 24, 'number_iter': 67, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '63.96 MB', 'start_time': 'pts/21', 'duration': 0.00053, 'router_size': 24, 'number_iter': 68, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '64.05 MB', 'start_time': 'pts/21', 'duration': 0.000379, 'router_size': 24, 'number_iter': 69, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '64.05 MB', 'start_time': 'pts/21', 'duration': 0.000678, 'router_size': 24, 'number_iter': 70, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '64.36 MB', 'start_time': 'pts/21', 'duration': 0.000557, 'router_size': 24, 'number_iter': 71, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '184', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '64.36 MB', 'start_time': 'pts/21', 'duration': 0.000623, 'router_size': 24, 'number_iter': 72, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '185', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '64.38 MB', 'start_time': 'pts/21', 'duration': 0.000398, 'router_size': 24, 'number_iter': 73, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '92.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.02 MB', 'start_time': 'pts/21', 'duration': 0.000698, 'router_size': 24, 'number_iter': 74, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '92.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.03 MB', 'start_time': 'pts/21', 'duration': 0.000255, 'router_size': 24, 'number_iter': 75, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '92.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.08 MB', 'start_time': 'pts/21', 'duration': 0.000373, 'router_size': 24, 'number_iter': 76, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '92.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.12 MB', 'start_time': 'pts/21', 'duration': 0.000549, 'router_size': 24, 'number_iter': 77, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '92.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.25 MB', 'start_time': 'pts/21', 'duration': 0.000498, 'router_size': 24, 'number_iter': 78, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.25 MB', 'start_time': 'pts/21', 'duration': 0.000525, 'router_size': 24, 'number_iter': 79, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.26 MB', 'start_time': 'pts/21', 'duration': 0.000404, 'router_size': 24, 'number_iter': 80, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.74 MB', 'start_time': 'pts/21', 'duration': 0.004714, 'router_size': 24, 'number_iter': 81, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.75 MB', 'start_time': 'pts/21', 'duration': 0.000375, 'router_size': 24, 'number_iter': 82, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '65.97 MB', 'start_time': 'pts/21', 'duration': 0.000656, 'router_size': 24, 'number_iter': 83, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.19 MB', 'start_time': 'pts/21', 'duration': 0.000549, 'router_size': 24, 'number_iter': 84, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.21 MB', 'start_time': 'pts/21', 'duration': 0.000363, 'router_size': 24, 'number_iter': 85, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.26 MB', 'start_time': 'pts/21', 'duration': 0.000412, 'router_size': 24, 'number_iter': 86, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.26 MB', 'start_time': 'pts/21', 'duration': 0.000381, 'router_size': 24, 'number_iter': 87, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.28 MB', 'start_time': 'pts/21', 'duration': 0.000482, 'router_size': 24, 'number_iter': 88, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.28 MB', 'start_time': 'pts/21', 'duration': 0.000407, 'router_size': 24, 'number_iter': 89, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '93.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.29 MB', 'start_time': 'pts/21', 'duration': 0.000472, 'router_size': 24, 'number_iter': 90, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.54 MB', 'start_time': 'pts/21', 'duration': 0.000705, 'router_size': 24, 'number_iter': 91, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '66.54 MB', 'start_time': 'pts/21', 'duration': 0.000457, 'router_size': 24, 'number_iter': 92, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.34 MB', 'start_time': 'pts/21', 'duration': 0.000803, 'router_size': 24, 'number_iter': 93, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.34 MB', 'start_time': 'pts/21', 'duration': 0.000352, 'router_size': 24, 'number_iter': 94, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.41 MB', 'start_time': 'pts/21', 'duration': 0.000682, 'router_size': 24, 'number_iter': 95, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.41 MB', 'start_time': 'pts/21', 'duration': 0.000534, 'router_size': 24, 'number_iter': 96, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '94.5', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.75 MB', 'start_time': 'pts/21', 'duration': 0.001053, 'router_size': 24, 'number_iter': 97, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '95.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.76 MB', 'start_time': 'pts/21', 'duration': 0.000371, 'router_size': 24, 'number_iter': 98, 'result': 'Ok'}
{'user': 'cuizhiw+', 'pid': '25448', 'cpu': '95.0', 'mem': '0.2', 'vsa': '6.63 GB', 'rss': '67.88 MB', 'start_time': 'pts/21', 'duration': 0.000527, 'router_size': 24, 'number_iter': 99, 'result': 'Ok'}
Thanks for you effort. I was able to reproduce it. Will work on a fix.
@ZhiWeiCui I was able to fix the problem. It was missing latitudes, longitudes and coordinates objects clean-up in the route method. Will open the PR soon.
I needed to keep track of object pointers so I could cleanup later, so the method will now looks like:
def route(self, route_coords, generate_hints=True):
cdef:
osrm.FloatLongitude** longitudes = <osrm.FloatLongitude**> malloc(
len(route_coords) * sizeof(osrm.FloatLongitude*))
osrm.FloatLatitude** latitudes = <osrm.FloatLatitude**> malloc(
len(route_coords) * sizeof(osrm.FloatLatitude*))
osrm.Coordinate** coords = <osrm.Coordinate**> malloc(
len(route_coords) * sizeof(osrm.Coordinate*))
osrm.RouteParameters *params = new osrm.RouteParameters()
params[0].generate_hints = generate_hints
for i, coord in enumerate(route_coords):
longitudes[i] = new osrm.FloatLongitude()
latitudes[i] = new osrm.FloatLatitude()
longitudes[i][0].__value = <double>coord[0]
latitudes[i][0].__value = <double>coord[1]
coords[i] = new osrm.Coordinate(longitudes[i][0], latitudes[i][0])
params[0].coordinates.push_back(coords[i][0])
result = RouteResult()
cdef osrm.Status status = self._thisptr[0].Route(params[0], result._thisptr[0])
result.set_status(status)
# cleanup
for i, coord in enumerate(route_coords):
del longitudes[i]
del latitudes[i]
del coords[i]
free(longitudes)
free(latitudes)
free(coords)
del params
return result
It was also missing a clean-up in the RouteResult class.
Are you using the pre-built wheels or compiling?
I will take the chance of the release to include the wheels for newer python versions.
I using the compiling for local debugging, and pre-built wheels for produce in linux.
Looking forward to the release.
Hi, any news about this? :)