Hello Martin, I'm trying to understand what you're saying but my background is in numerical methods where tasks are split into threads for acceleration purposes. If a single layer is rendered by a single core (as you write and I was observing), how would a 1,000 x 1,000 (or a 5,000 x 5,000) layer be handled? Wouldn't it take too long? (However, you want to define 'too long'). As far as more details about the process, the tensor 'var' (n x m x index where I have tried different combinations but let's say n x m is 100 x 200) of floating point numbers is manipulated according to the following pseudo-code: # Initial manipulations dims = var.dimensions shape = var.shape driver_name = 'GTIFF' driver = gdal.GetDriverByName(driver_name) np_dtype = var.dtype type_code = gdal_array.NumericTypeCodeToGDALTypeCode(np_dtype) gdal_ds = driver.Create(_my_path_, cols, rows, 1, gdal.GDT_UInt16) gdal_ds.SetProjection(_my_projection_) gdal_ds.SetGeoTransform(_my_transformation_) # Creation of the bands and scaled matrix band = gdal_ds.GetRasterBand(1) data = var[_chosen_index_] data = ma.getdata(data) data_scaled = np.interp(data, (data.min(), data.max()), (0, 255)) data_scaled2 = data_scaled.astype(int) # This is to rescale into integers so that it can color the layer # *** Lines to set up the color palette *** # Write the array to band once everything has been rescaled band.WriteArray(data_scaled2) gdal_ds.FlushCache() This procedure seems to work well and takes a reasonable amount of time. Then, the time is consumed when doing the rendering itself. I'm not entirely sure what you mean by 'sub-optimal raster format' or 'thre are overviews missing' so I cannot address them specifically. Thanks, Arturo Martin Dobias wrote: Hi On Fri, May 26, 2023 at 11:30 PM afernandez via QGIS-Developer <qgis-developer@lists.osgeo.org <mailto:qgis-developer@lists.osgeo.org> > wrote: Hello, One of my project would greatly benefit from a much faster rendering. After some testing, the bulk (>99%) of the time is spent at rendering the layer with QgsRasterLayer(...,...). What I have also noticed is that rendering time does not change with the number of cores, which suggests that the renderer might be using a single thread. I checked the API documentation but couldn't find anything about multithreading or some other procedure to accelerate rendering. I was wondering if anyone has any suggestion or has faced a similar difficulty. Multi-threaded rendering is done at the granularity of whole map layers, so a single layer is rendered by a single CPU core. Therefore if you have just one layer that is slow to render, the multi-threading is not going to help. It is best to do some testing how you can improve the layer's rendering - for example, it could be that you are using some sub-optimal raster format, or there are overviews missing, or something else... one would need more details. Regards Martin
_______________________________________________ QGIS-Developer mailing list QGIS-Developer@lists.osgeo.org List info: https://lists.osgeo.org/mailman/listinfo/qgis-developer Unsubscribe: https://lists.osgeo.org/mailman/listinfo/qgis-developer