<div dir="ltr">Hallo Joachim,<div><br></div><div>die Verwendung des Multiprocessing-Moduls geht mit einem gewissen Overhead einher. Da die Kalkulation in deinem Beispiel nicht besonders aufwändig ist, ist dieser Overhead größer als der Performancegewinn.</div><div><br></div><div>Was möchtest du denn erreichen?</div><div><br></div><div>Viele Grüße,</div><div>Daniel</div><div><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-06-19 13:21 GMT+02:00 Joachim Sasse <span dir="ltr"><<a href="mailto:sassec1@t-online.de" target="_blank">sassec1@t-online.de</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
  

    
  
  <div bgcolor="#FFFFFF" text="#000000">
    <p><font size="+1">Hallo zusammen,</font></p>
    <p><font size="+1">ich brauche einen Tipp, um mein Multiprocessing
        Testmodul ( kleine Kalkulation ) zu beschleunigen.  (Win 10,64,
        i7 4790k , 32G RAM)<br>
      </font></p>
    <p>Anzahl-Liste: 5000000   Time: 1.9154649782858315<br>
    </p>
    <pre style="background-color:#000000;color:#c0c0c0;font-family:'HelveticaMonospacedW01';font-size:12,0pt"><span style="color:#ff0000">from </span>multiprocessing <span style="color:#ff0000">import </span>Pool
<span style="color:#ff0000">import </span>math<span style="color:#ffffff">,</span>time
<span style="color:#e4e4e4">wu    </span><span style="color:#ffffff">= </span>math<span style="color:#ffffff">.</span>sqrt

<span style="color:#649988;font-style:italic">
</span><span style="color:#ff0000">def </span><span style="color:#c8ff00">run_calc</span>(<span style="color:#e4e4e4">x</span>)<span style="color:#ffffff">:
</span><span style="color:#ffffff">    </span><span style="color:#ff0000">return </span><span style="color:#e4e4e4">wu</span>(<span style="color:#e4e4e4">x</span>)<span style="color:#ffffff">, </span><span style="color:#e4e4e4">x </span><span style="color:#ffffff">* </span><span style="color:#e4e4e4">x</span><span style="color:#ffffff">, </span><span style="color:#e4e4e4">x </span><span style="color:#ffffff">* </span><span style="color:#e4e4e4">x </span><span style="color:#ffffff">* </span><span style="color:#e4e4e4">x
</span><span style="color:#e4e4e4">
</span><span style="color:#e4e4e4">
</span><span style="color:#ff0000">if </span>__name__ <span style="color:#ffffff">== </span><span style="color:#269e10">'__main__'</span><span style="color:#ffffff">:
</span><span style="color:#ffffff">    </span><span style="color:#649988;font-style:italic"></span><span style="color:#e4e4e4">t0 </span><span style="color:#ffffff">= </span>time<span style="color:#ffffff">.</span>perf_counter()
    <span style="color:#e4e4e4">pool   </span><span style="color:#ffffff">= </span>Pool(<span style="color:#c2ae0f">4</span>)
    <span style="color:#e4e4e4">result </span><span style="color:#ffffff">= </span><span style="color:#e4e4e4">pool</span><span style="color:#ffffff">.</span>map(run_calc<span style="color:#ffffff">, </span>(<span style="color:#e4e4e4">x </span><span style="color:#ff0000">for </span><span style="color:#e4e4e4">x </span><span style="color:#ff0000">in </span><span style="color:#ad0fa5">range</span>(<span style="color:#c2ae0f">1</span><span style="color:#ffffff">, </span><span style="color:#c2ae0f">5_000_001</span>))<span style="color:#ffffff">,</span><span style="color:#c2ae0f">2000</span>)
    <span style="color:#649988;font-style:italic"></span><span style="color:#e4e4e4">t1 </span><span style="color:#ffffff">= </span>time<span style="color:#ffffff">.</span>perf_counter()

    <span style="color:#ad0fa5">print</span>(<span style="color:#ad0fa5">len</span>(<span style="color:#e4e4e4">result</span>)<span style="color:#ffffff">,</span><span style="color:#e4e4e4">t1</span><span style="color:#ffffff">-</span><span style="color:#e4e4e4">t0</span>)

<span style="color:#649988;font-style:italic">    </span><span style="color:#e4e4e4">pool</span><span style="color:#ffffff">.</span>close()
    <span style="color:#e4e4e4">pool</span><span style="color:#ffffff">.</span>join()

<span style="color:#269e10">
</span></pre>
    <p><font size="+1"><br>
      </font></p>
    <p><font size="+1">das andere Beispiel ist Single-Threading mit und
        ohne  JIT aus numba - beides wesentlich schneller !<br>
      </font></p>
    <p>Anzahl-Liste: 5000000   Time: 0.8098236565761535     ohne JIT:  
      5000000 1.530495929796201<br>
    </p>
    <pre style="background-color:#000000;color:#c0c0c0;font-family:'HelveticaMonospacedW01';font-size:12,0pt"><span style="color:#ff0000">import </span>time<span style="color:#ffffff">, </span>math
<span style="color:#ff0000">from </span>numba <span style="color:#ff0000">import </span>jit
<span style="color:#e4e4e4">wu </span><span style="color:#ffffff">= </span>math<span style="color:#ffffff">.</span>sqrt
<span style="color:#649988;font-style:italic">
</span><span style="color:#ffffff">@</span><span style="color:#66ccff">jit
</span><span style="color:#ff0000">def </span><span style="color:#c8ff00">calc</span>()<span style="color:#ffffff">:
</span><span style="color:#ffffff">   </span><span style="color:#649988;font-style:italic"> </span><span style="color:#e4e4e4">l </span><span style="color:#ffffff">= </span>[]
    <span style="color:#ff0000">for </span><span style="color:#e4e4e4">x </span><span style="color:#ff0000">in </span><span style="color:#ad0fa5">range</span>(<span style="color:#c2ae0f">1</span><span style="color:#ffffff">,</span><span style="color:#c2ae0f">5_000_001</span>)<span style="color:#ffffff">:
</span><span style="color:#ffffff">        </span><span style="color:#e4e4e4">l</span><span style="color:#ffffff">.</span>append((<span style="color:#e4e4e4">wu</span>(<span style="color:#e4e4e4">x</span>)<span style="color:#ffffff">,</span><span style="color:#e4e4e4">x</span><span style="color:#ffffff">*</span><span style="color:#e4e4e4">x</span><span style="color:#ffffff">,</span><span style="color:#e4e4e4">x</span><span style="color:#ffffff">*</span><span style="color:#e4e4e4">x</span><span style="color:#ffffff">*</span><span style="color:#e4e4e4">x</span>))
    <span style="color:#ff0000">return </span><span style="color:#e4e4e4">l
</span><span style="color:#e4e4e4">
</span><span style="color:#e4e4e4">t1 </span><span style="color:#ffffff">= </span>time<span style="color:#ffffff">.</span>perf_counter()
<span style="color:#e4e4e4">l</span><span style="color:#ffffff">= </span>calc()
<span style="color:#e4e4e4">t2 </span><span style="color:#ffffff">= </span>time<span style="color:#ffffff">.</span>perf_counter()
<span style="color:#ad0fa5">print</span>(<span style="color:#ad0fa5">len</span>(<span style="color:#e4e4e4">l</span>)<span style="color:#ffffff">,</span><span style="color:#e4e4e4">t2</span><span style="color:#ffffff">-</span><span style="color:#e4e4e4">t1</span>)</pre>
    <p><br>
    </p>
    Vielen Dank für alle Ideen,Tipps und Anregungen !<span class="HOEnZb"><font color="#888888"><br>
    Joachim Sasse<br>
    <br>
    <br>
  </font></span></div>

<br>______________________________<wbr>__________<br>
<br>
Diese Mail erhalten Sie ueber die Mailingliste python-users der Universitaet zu Koeln<br>
Nachrichten an: <a href="mailto:python-users@uni-koeln.de">python-users@uni-koeln.de</a><br>
Abonnement und Benutzereinstellungen: <a href="https://lists.uni-koeln.de/mailman/listinfo/python-users" rel="noreferrer" target="_blank">https://lists.uni-koeln.de/<wbr>mailman/listinfo/python-users</a><br>
Listenarchiv: <a href="http://pycologne.de/mlsearch.html" rel="noreferrer" target="_blank">http://pycologne.de/mlsearch.<wbr>html</a><br>
<br>
pyCologne Homepage: <a href="http://pycologne.de/" rel="noreferrer" target="_blank">http://pycologne.de/</a><br>
<br></blockquote></div><br></div>