Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.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 加速xarray';菲尔纳酒店_Python_Performance_Python Xarray_Fillna - Fatal编程技术网

Python 加速xarray';菲尔纳酒店

Python 加速xarray';菲尔纳酒店,python,performance,python-xarray,fillna,Python,Performance,Python Xarray,Fillna,我有一个相当大的netCDF文件(~10gb),它的填充值为-1.0 当我像这样使用xarray的fillna时: hndl_nc = hndl_nc.fillna(0.0) 速度很慢(~2分钟),是否有其他操作员速度更快?或者,考虑到文件的大小,这是预期的?速度约为85MB/s,这是矢量化NumPy/xarray操作的典型性能。我认为,仅仅使用另一个内置操作不太可能显著改善这一点 您仍然可以通过一些实验来提高性能。要做的第一件事是分析和查看CPU使用情况,以确定时间花在哪里 如果您在Pyt

我有一个相当大的netCDF文件(~10gb),它的填充值为-1.0

当我像这样使用xarray的fillna时:

hndl_nc = hndl_nc.fillna(0.0)

速度很慢(~2分钟),是否有其他操作员速度更快?或者,考虑到文件的大小,这是预期的?

速度约为85MB/s,这是矢量化NumPy/xarray操作的典型性能。我认为,仅仅使用另一个内置操作不太可能显著改善这一点

您仍然可以通过一些实验来提高性能。要做的第一件事是分析和查看CPU使用情况,以确定时间花在哪里

  • 如果您在Python中受CPU限制:如果尚未使用Dask,请尝试使用Dask并行化操作
  • 如果您在netCDF/HDF5进程中受到CPU的限制:这可能是netCDF4文件具有文件内zlib压缩(这相当慢)的症状。可以提前将数据加载到内存中(使用
    .load()
    ),在不压缩的情况下重写文件,或者尝试使用xarray v0.9.0或更高版本(当前在候选版本中)进行Dask分布式或多处理
  • 如果您受到IO约束,请考虑:
    • 如果您有netCDF3文件,
      engine='scipy'
      可以更快
    • 切换到
      scale\u factor
      /
      add\u offset
      压缩
      int16
      中的数据,而不是更大的浮点类型

谢谢@shoyer,我想我对这种情况记忆犹新。将尝试xarray发布候选版本