OGR / GDAL线程导致内核利用率低
我正在尝试使用ogr / gdal处理一些栅格数据,但似乎无法充分利用计算机上的所有内核。当我仅在单个内核上运行该进程时,该内核的利用率为100%。当我尝试拆分为多核时(在下面的示例中,通过对x偏移量进行分块并将它们放入队列中),我的8个内核中的每个内核都得到了可悲的利用。看起来每个内核的利用率仅相加达到100%(例如,每个内核的利用率为12.5%)。 我担心使用相同的数据源是瓶颈,但是后来我为每个核心复制了底层栅格文件...并且核心利用率仍然很低。这使我相信,ogr或gdal某种程度上表现得像瓶颈共享资源,但是我在网上找不到任何东西。任何帮助将非常感激! 这是在每个辅助线程中运行的“帮助器”功能: def find_pixels_intersect_helper(datasource, bounds_wkt, x_min, x_max): bounds = ogr.CreateGeometryFromWkt(bounds_wkt) rows_to_write = [] for x_offset in range(x_min, x_max): for y_offset in range(datasource.RasterYSize): pxl_bounds_wkt = pix_to_wkt(datasource, x_offset, y_offset) pxl_bounds = ogr.CreateGeometryFromWkt(pxl_bounds_wkt) if pxl_bounds.Intersect(bounds): rows_to_write.append(['%s_%s' % (x_offset, y_offset), pxl_bounds.Centroid().ExportToWkt()])