Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/oracle/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 以最快的方式远程存储和检索300个短时间序列作为数据帧_Python_Pandas_Parquet_Feather - Fatal编程技术网

Python 以最快的方式远程存储和检索300个短时间序列作为数据帧

Python 以最快的方式远程存储和检索300个短时间序列作为数据帧,python,pandas,parquet,feather,Python,Pandas,Parquet,Feather,我有一个大约300个时间序列的数组,每个数组不超过6列,不超过10000行 我需要将它们存储在一个单独的持久性机器中,以便从其他机器访问。其他机器将非常频繁地读取这些数据,我需要尽快读取这些数据 最初,我将每一行存储为一个PostgreSQL行 然后我切换到,如果我使用线程,性能提升会非常令人印象深刻: from multiprocessing.pool import ThreadPool p = ThreadPool(300) def read(i): return library.

我有一个大约300个时间序列的数组,每个数组不超过6列,不超过10000行

我需要将它们存储在一个单独的持久性机器中,以便从其他机器访问。其他机器将非常频繁地读取这些数据,我需要尽快读取这些数据

最初,我将每一行存储为一个PostgreSQL行

然后我切换到,如果我使用线程,性能提升会非常令人印象深刻:

from multiprocessing.pool import ThreadPool
p = ThreadPool(300)

def read(i):
    return library.read(str(i)).data


dataframes = p.starmap(read, [0,1,2,3...])
我在这里发布了基准测试:

Arctic是基于MongoDB的,在MongoDB中数据帧被pickle,然后用一个唯一的密钥存储和检索

有了它,我可以在3秒钟内从一个Atlas免费层MongoDB实例加载我的数据帧

有什么方法可以更快地完成这项工作吗

像Feather和Parquet这样的解决方案是否意味着只存储在文件系统上?如果是,如何在不影响读取性能的情况下远程共享此文件系统?如果我将腌制的数据帧存储在Postgres中,那会是一个坏主意吗

我研究了很多不同的解决方案,但它们都关注单个数据帧的大小,而不是单独数据帧的数量。我的数据帧相对较小,但很多,我需要多次阅读所有数据帧