<html xmlns:v="urn:schemas-microsoft-com:vml" xmlns:o="urn:schemas-microsoft-com:office:office" xmlns:w="urn:schemas-microsoft-com:office:word" xmlns:m="http://schemas.microsoft.com/office/2004/12/omml" xmlns="http://www.w3.org/TR/REC-html40">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=us-ascii">
<meta name="Generator" content="Microsoft Word 15 (filtered medium)">
<style><!--
/* Font Definitions */
@font-face
        {font-family:"Cambria Math";
        panose-1:2 4 5 3 5 4 6 3 2 4;}
@font-face
        {font-family:Calibri;
        panose-1:2 15 5 2 2 2 4 3 2 4;}
/* Style Definitions */
p.MsoNormal, li.MsoNormal, div.MsoNormal
        {margin:0cm;
        font-size:11.0pt;
        font-family:"Calibri",sans-serif;
        mso-fareast-language:EN-US;}
a:link, span.MsoHyperlink
        {mso-style-priority:99;
        color:#0563C1;
        text-decoration:underline;}
span.Shkpostityyli17
        {mso-style-type:personal-compose;
        font-family:"Calibri",sans-serif;
        color:windowtext;}
.MsoChpDefault
        {mso-style-type:export-only;
        mso-fareast-language:EN-US;}
@page WordSection1
        {size:612.0pt 792.0pt;
        margin:70.85pt 2.0cm 70.85pt 2.0cm;}
div.WordSection1
        {page:WordSection1;}
--></style><!--[if gte mso 9]><xml>
<o:shapedefaults v:ext="edit" spidmax="1026" />
</xml><![endif]--><!--[if gte mso 9]><xml>
<o:shapelayout v:ext="edit">
<o:idmap v:ext="edit" data="1" />
</o:shapelayout></xml><![endif]-->
</head>
<body lang="FI" link="#0563C1" vlink="#954F72" style="word-wrap:break-word">
<div class="WordSection1">
<p class="MsoNormal">Hi,<o:p></o:p></p>
<p class="MsoNormal"><o:p> </o:p></p>
<p class="MsoNormal"><span lang="EN-US">Have a look at this gis.stackexchange question
<a href="https://gis.stackexchange.com/questions/415925/error-in-gdal2tiles-with-processes">
https://gis.stackexchange.com/questions/415925/error-in-gdal2tiles-with-processes</a>.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Question is about using gdal2tiles with QGIS but the issue is reproduced also with OSGeo4w. Is there something changed in multiprocessing between Python versions 3.7 and 3.9, or is something else failing with errors:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">RuntimeError:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        An attempt has been made to start a new process before the<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        current process has finished its bootstrapping phase.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        This probably means that you are not using fork to start your<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        child processes and you have forgotten to use the proper idiom<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        in the main module:<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">            if __name__ == '__main__':<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                freeze_support()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">                ...<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        The "freeze_support()" line can be omitted if the program<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">        is not going to be frozen to produce an executable.<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">Traceback (most recent call last):<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "<string>", line 1, in <module><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\spawn.py", line 116, in spawn_main<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    exitcode = _main(fd, parent_sentinel)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\spawn.py", line 125, in _main<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    prepare(preparation_data)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\spawn.py", line 236, in prepare<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    _fixup_main_from_path(data['init_main_from_path'])<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\spawn.py", line 287, in _fixup_main_from_path<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    main_content = runpy.run_path(main_path,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\runpy.py", line 268, in run_path<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    return _run_module_code(code, init_globals, run_name,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\runpy.py", line 97, in _run_module_code<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    _run_code(code, mod_globals, init_globals,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\runpy.py", line 87, in _run_code<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    exec(code, run_globals)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\Scripts\gdal2tiles.py", line 11, in <module><o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    sys.exit(main(sys.argv))<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages\osgeo_utils\gdal2tiles.py", line 3257, in main<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    multi_threaded_tiling(input_file, output_folder, options)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\site-packages\osgeo_utils\gdal2tiles.py", line 3206, in multi_threaded_tiling<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    pool = Pool(processes=nb_processes)<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\context.py", line 119, in Pool<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    return Pool(processes, initializer, initargs, maxtasksperchild,<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">  File "C:\PROGRA~1\QGIS32~1.0\apps\Python39\lib\multiprocessing\pool.py", line 212, in __init__<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">    self._repopulate_pool()<o:p></o:p></span></p>
<p class="MsoNormal"><span lang="EN-US"><o:p> </o:p></span></p>
<p class="MsoNormal"><span lang="EN-US">-Jukka Rahkonen-<o:p></o:p></span></p>
</div>
</body>
</html>