<html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class=""><div class="">I have been running some test on PyPy3 1) hope someone can confirm/explain this:</div><div class=""><br class=""></div><div class="">If PyPy is running a tight loop in a thread, other threads will not be run/scheduled?</div><div class=""><br class=""></div><div class="">The example:</div><div class=""><br class=""></div><div class="">I am running factorial(200000) in a thread: 2)</div><div class=""><pre class="" style="background-color: rgb(255, 255, 255); font-family: Menlo; font-size: 9pt;"><pre class="" style="font-family: Menlo; font-size: 9pt;"><span class="" style="color: rgb(0, 0, 128); font-weight: bold;">class </span>MathActor(Actor):<br class="">    <span class="" style="color: rgb(0, 0, 128); font-weight: bold;">def </span>factorial(<span class="" style="color: rgb(148, 85, 141);">self</span>, n):<br class="">        logger.debug(<span class="" style="color: rgb(0, 128, 128); font-weight: bold;">"factorial(%d)" </span>% n)<br class="">        i = n<br class="">        <span class="" style="color: rgb(0, 0, 128); font-weight: bold;">while </span>i > <span class="" style="color: rgb(0, 0, 255);">1</span>:<br class="">            i -= <span class="" style="color: rgb(0, 0, 255);">1<br class=""></span><span class="" style="color: rgb(0, 0, 255);">            </span>n *= i<br class="">        logger.debug(<span class="" style="color: rgb(0, 128, 128); font-weight: bold;">"fact done..."</span>)<br class="">        <span class="" style="color: rgb(0, 0, 128); font-weight: bold;">return </span>n<br class=""></pre><div class=""><br class=""></div></pre></div><div class="">On pypy3 all other threads (100+) seams to stop/block, while factorial() is executing, the log:</div><div class=""><div class=""><br class=""></div><div class="">180404 142203.094 INFO  [worker:3:WorkerTask] timeout(): 4</div><div class="">180404 142203.094 INFO  [worker:3:WorkerTask] Starting math job</div><div class=""><b class="">*180404 142203.095 DEBUG factorial(200000)*</b></div><div class=""><b class="">*180404 142234.486 DEBUG fact done…*</b></div><div class="">180404 142234.487 INFO  [netclient:9:EchoClientTask] Client: timeout: 127.0.0.1:5050</div><div class="">180404 142234.488 INFO  [worker:3:WorkerTask] timeout(): 5</div><div class="">180404 142238.257 INFO  [worker:3:WorkerTask] result from factorial, has 973351 digits</div></div><div class=""><br class=""></div><div class=""><div class="">I suspect the JIT sits in a very tight loop? But the OS should schedule other threads? Event though the don’t do I/O? Most of them doing queue.get(timeout=5) waiting for new messages. I did a quick google, but could not find anything about this on pypy3.</div></div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">On cpython3 3) the other threads seams to run while the factorial thread is running</div><div class=""><div class=""><div class=""><br class=""></div><div class="">180404 142502.124 INFO  [netclient:9:EchoClientTask] Client received: 'From Server count: 4'</div><div class="">180404 142506.494 INFO  [worker:3:WorkerTask] timeout(): 4</div><div class="">180404 142506.494 INFO  [worker:3:WorkerTask] Starting math job</div><div class=""><b class="">*180404 142506.495 DEBUG factorial(200000)*</b></div><div class="">180404 142507.135 INFO  [netclient:9:EchoClientTask] Client: timeout: 127.0.0.1:5050</div><div class="">180404 142507.368 INFO  [netclient:9:EchoClientTask] Client received: 'From Server count: 5'</div><div class="">180404 142511.506 INFO  [worker:3:WorkerTask] timeout(): 5</div><div class="">180404 142511.519 INFO  [worker:3:WorkerTask] setting value for long_work()....</div><div class="">180404 142511.540 INFO  [client3:6:ClientTask] Wait: got 3 = 42</div><div class="">180404 142511.546 INFO  [client3:6:ClientTask] Worker Task done: Good work...</div><div class="">180404 142512.386 INFO  [netclient:9:EchoClientTask] Client: timeout: 127.0.0.1:5050</div><div class="">180404 142512.598 INFO  [netclient:9:EchoClientTask] Client received: 'From Server count: 6'</div><div class="">180404 142516.538 INFO  [worker:3:WorkerTask] timeout(): 6</div><div class="">180404 142516.548 INFO  [client3:6:ClientTask] Worker Task done: Good work...</div><div class="">180404 142517.616 INFO  [netclient:9:EchoClientTask] Client: timeout: 127.0.0.1:5050</div><div class="">180404 142517.776 INFO  [netclient:9:EchoClientTask] Client received: 'From Server count: 7'</div><div class=""><b class="">*180404 142520.666 DEBUG fact done…*</b></div><div class="">180404 142521.554 INFO  [worker:3:WorkerTask] timeout(): 7</div><div class="">180404 142535.265 INFO  [netclient:9:EchoClientTask] Client: timeout: 127.0.0.1:5050</div><div class="">180404 142535.268 INFO  [worker:3:WorkerTask] result from factorial, has 973351 digits</div></div></div><div class=""><br class=""></div><div class="">br</div><div class="">/Rene</div><div class=""><br class=""></div><div class=""><br class=""></div><div class="">1) pypy3 installed with brew</div><div class=""><div class="">Python 3.5.3 (3f6eaa010fce78cc7973bdc1dfdb95970f08fed2, Jan 13 2018, 18:14:01)</div><div class="">[PyPy 5.10.1 with GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)]</div><div class=""><br class=""></div><div class="">2) <span class="" style="caret-color: rgb(36, 41, 46); color: rgb(36, 41, 46); font-family: SFMono-Regular, Consolas, "Liberation Mono", Menlo, Courier, monospace; background-color: rgb(255, 255, 255);"><a href="https://github.com/pylots/pyworks.git" class="">https://github.com/pylots/pyworks.git</a></span></div><div class=""><br class=""></div><div class="">3) python3</div><div class=""><div class="">Python 3.6.5 (default, Mar 30 2018, 06:41:53)</div><div class="">[GCC 4.2.1 Compatible Apple LLVM 9.0.0 (clang-900.0.39.2)] on darwin</div></div><div class=""><br class=""></div><div class="">4) HW</div><div class="">MacBook (Retina, 12-inch, 2017)</div><div class=""><div class="" style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "Helvetica Neue";">1,4 GHz Intel Core i7 (dual core)</div><div class="" style="margin: 0px; font-stretch: normal; font-size: 11px; line-height: normal; font-family: "Helvetica Neue";"><br class=""></div></div></div></body></html>