Я импортирую данные облака точек в MonetDB, используя MonetDBLite и Python. Поскольку некоторые этапы обработки требуют значительных ресурсов процессора, я распараллеливаю обработку для работы на двух ядрах. В конце предварительной обработки данные загружаются в MonetDB из фрейма данных Pandas.
Пока активен процесс Python, размер базы данных на диске увеличивается с каждой вставкой. Но как только процесс / работник завершает работу, размер диска уменьшается до 1,5 МБ.
Как сделать изменения постоянными?
Это грубое упрощение рабочего процесса:
def process:
# preprocessing...
x, y = numpy.meshgrid(numpy.arange(1000), numpy.arange(1000))
z = numpy.random.rand(1000000)
data = pandas.DataFrame({"x": x, "y": y, "z": z})
conn = monetdblite.connectclient()
monetdblite.insert('points', data, client=conn)
del conn
datalist = [...]
monetdblite.init("./database/")
with Pool(processes=2, maxtasksperchild=1) as p:
p.map(process, datalist, 1)
monetdblite.shutdown()