<div dir="ltr"><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">Hello,</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">because Python is a very dynamic language the memory management is heavily used. A lot of time is used for creating (reserve memory and fill object structure with data) and destroying objects.</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">Because of this and because of the discussions about the GIL I was wondering if there isn't a solution to get Python code really executed in parallel without the need to create several processes and without a huge overhead.</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">And here comes the idea for POPT. With this idea the Python interpreter has running several threads in background (1 thread for each object type) which manage a set of objects as an object cache. Each object in the cache is already preconfigured by the object provider thread. So only the part of the object structure which is individual has to be initialized. This saves a lot of processing time for the main thread and the memory management has much less to do, because temporarily unused objects can be reused immediately.</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">Another advantage is that every Python code uses several CPU cores in parallel, even if it is a single threaded application, without the need to change the Python code.</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">If this idea is well implemented I expect a big performance improvement for all Python applications.</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">Best regards,</div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word"><br></div><div class="gmail-m_-4009782119277419910gmail--x-evo-paragraph" id="gmail-m_-4009782119277419910gmail--x-evo-input-start" style="font-variant-numeric:normal;font-variant-east-asian:normal;font-weight:normal;text-decoration-style:initial;text-decoration-color:initial;color:rgb(33,33,33);font-family:monospace;line-height:normal;width:71ch;word-wrap:break-word;word-break:break-word">Martin</div><div class="gmail-yj6qo" style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial"></div><div class="gmail-adL" style="font-size:12.8px;text-decoration-style:initial;text-decoration-color:initial"><br class="gmail-m_-4009782119277419910gmail-Apple-interchange-newline"></div><br></div>