<html><head><meta http-equiv="Content-Type" content="text/html; charset=UTF-8" /></head><body style='font-size: 10pt; font-family: Verdana,Geneva,sans-serif'>
<p>Hi Nyall,</p>
<p>Interesting.</p>
<p>Your "thinking aloud" - is this something that would have to wait for QGIS 4x or could this be interested in 3.x already? Just wondering ...</p>
<p>From a user point of view it would be very interesting to have processing within a layer in update mode without having to create separate new layers. Also, of course, the parallelization option (for certain algorithms where feasible).</p>
<p>Andreas</p>
<p>On 2017-01-06 00:11, Nyall Dawson wrote:</p>
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0"><!-- html ignored --><!-- head ignored --><!-- meta ignored -->
<div class="pre" style="margin: 0; padding: 0; font-family: monospace">On 3 January 2017 at 18:19, Anita Graser <<a href="mailto:anitagraser@gmx.at">anitagraser@gmx.at</a>> wrote:
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0">Hi,<br /><br /> I'm currently writing a script that could benefit a lot from<br /> parallelization. Will Processing in QGIS 3 provide parallelization support?<br /> Or is it better to look into how to achieve parallelization independent of<br /> Processing, e.g. using Python's multiprocessing library?</blockquote>
<br /> Depends what you're after. When processing is ported to the new task<br /> manager framework then algorithms will be able to run in parallel<br /> (where possible). Eg a buffer for one layer can run while a transform<br /> occurs on another layer.<br /><br /> If you're after parallelization *within* a single algorithm (Eg<br /> buffering features using multiple threads) then I'm unaware of any<br /> plans in place to handle this.<br /><br /><br /><br /> * That said.... read on for some thinking aloud....<br /><br /> I think when we port the guts of processing over to c++ then this will<br /> become relatively straightforward. I'd see this happening:<br /> - algorithms which operate feature-by-feature inherit a special<br /> algorithm subclass (say "QgsFeatureBasedAlgorithm" or something) and<br /> override some base class "QgsFeature processFeature( QgsFeature )"<br /> method. Eg a buffer alg will implement this to buffer the passed<br /> feature's geometry and return a new modified feature.<br /> - QgsFeatureBasedAlgorithm could take advantage of something like<br /> QtConcurrent::mappedReduced to call processFeature on multiple threads<br /> and use the result function to write out the results for each<br /> processFeature call. Nice and (theoretically) easy way to gain<br /> multithreaded algorithms, and it would be simple to adapt many<br /> existing algorithms to this (buffer, centroid, transform, translate,<br /> .... Basically anything which operates on each feature in isolation).<br /><br /> The side benefit of this refactoring would allow something I've wanted<br /> for a while - a way for processing algorithms to modify a selection<br /> inside a layer "in place". Eg select a bunch of polygons, run the<br /> buffer alg on the selection (not sure of the best UI to expose this!)<br /> and each selected feature will be buffered. Currently there's no easy<br /> way to do this in QGIS - you've got to run the alg on a selection and<br /> get a new layer, then delete the selection, and finally copy features<br /> back from the new output layer to the source layer. Yuck.<br /><br /> Nyall<br /><br /><br /><br /><br /><br />
<blockquote type="cite" style="padding: 0 0.4em; border-left: #1010ff 2px solid; margin: 0"><br /> Thank you and best wishes,<br /> Anita<br /><br /><br /><br /> _______________________________________________<br /> Qgis-developer mailing list<br /><a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br /> List info: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br /> Unsubscribe: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a></blockquote>
_______________________________________________<br /> Qgis-developer mailing list<br /><a href="mailto:Qgis-developer@lists.osgeo.org">Qgis-developer@lists.osgeo.org</a><br /> List info: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a><br /> Unsubscribe: <a href="http://lists.osgeo.org/mailman/listinfo/qgis-developer">http://lists.osgeo.org/mailman/listinfo/qgis-developer</a></div>
</blockquote>
<p> </p>
<div> </div>
</body></html>