title: CPU bound code twice as fast on laptop as desktop
body: <p>I have a single-threaded Python 3 program that's CPU bound, the only IO is printing a couple of lines to output (no reading/writing of files).</p>
  
  <p>On my desktop machine (AMD Ryzen 1700x 3.8 GHz, 16GB 3000 MHz DDR4) it performs (consistently) at 3400 episodes/second where a run takes around 60 seconds.</p>
  
  <p>On my laptop (Intel i7-6600U 2.8 GHz, 16GB 2000 MHz DDR3) the performance is doubled at 7000 episodes/second, and a run coming in at just under 30 seconds.</p>
  
  <p>Both machines run the same operating systems (Fedora 26) and the same python version (not built from source).</p>
  
  <p>What's more, when profiling, there's a line showing</p>
  
  <pre><code>10.999 tottime, 28.814 cumtime for arrayprint.py:557(fillFormat)
  </code></pre>
  
  <p>but only when the code is run on the desktop. On the laptop, the particular function does not appear at all (and none of the <code>arrayprint</code> functions use more than 1 second tottime).</p>
  
  <p>Not only is it strange that the performance differs between the machines, but no arrays or lists are ever printed to the screen, converted to strings, or saved to files during the execution of the program.</p>
  
  <p>Here's the full profile for the desktop:</p>
  
  <pre><code>         54499635 function calls (53787999 primitive calls) in 58.746 seconds
  
     Ordered by: standard name
     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
     533727    0.359    0.000    0.514    0.000 &lt;frozen importlib._bootstrap&gt;:402(parent)
     533727    0.469    0.000    0.697    0.000 &lt;frozen importlib._bootstrap&gt;:989(_handle_fromlist)
          1    0.000    0.000   58.746   58.746 &lt;string&gt;:1(&lt;module&gt;)
          4    0.000    0.000    0.000    0.000 __init__.py:120(getLevelName)
     567524    0.237    0.000    0.727    0.000 __init__.py:1284(debug)
          2    0.000    0.000    0.000    0.000 __init__.py:1296(info)
          2    0.000    0.000    0.000    0.000 __init__.py:1308(warning)
          2    0.000    0.000    0.000    0.000 __init__.py:1320(warn)
          4    0.000    0.000    0.000    0.000 __init__.py:1374(findCaller)
          4    0.000    0.000    0.000    0.000 __init__.py:1404(makeRecord)
          4    0.000    0.000    0.000    0.000 __init__.py:1419(_log)
          4    0.000    0.000    0.000    0.000 __init__.py:1444(handle)
          4    0.000    0.000    0.000    0.000 __init__.py:1498(callHandlers)
     567528    0.175    0.000    0.175    0.000 __init__.py:1528(getEffectiveLevel)
     567528    0.315    0.000    0.490    0.000 __init__.py:1542(isEnabledFor)
          4    0.000    0.000    0.000    0.000 __init__.py:157(&lt;lambda&gt;)
          4    0.000    0.000    0.000    0.000 __init__.py:251(__init__)
          4    0.000    0.000    0.000    0.000 __init__.py:329(getMessage)
          4    0.000    0.000    0.000    0.000 __init__.py:387(usesTime)
          4    0.000    0.000    0.000    0.000 __init__.py:390(format)
          4    0.000    0.000    0.000    0.000 __init__.py:540(usesTime)
          4    0.000    0.000    0.000    0.000 __init__.py:546(formatMessage)
          4    0.000    0.000    0.000    0.000 __init__.py:562(format)
          8    0.000    0.000    0.000    0.000 __init__.py:703(filter)
          8    0.000    0.000    0.000    0.000 __init__.py:807(acquire)
          8    0.000    0.000    0.000    0.000 __init__.py:814(release)
          4    0.000    0.000    0.000    0.000 __init__.py:827(format)
          4    0.000    0.000    0.000    0.000 __init__.py:850(handle)
          4    0.000    0.000    0.000    0.000 __init__.py:969(flush)
          4    0.000    0.000    0.000    0.000 __init__.py:980(emit)
     289159    0.101    0.000    1.491    0.000 _methods.py:31(_sum)
     533727    0.175    0.000    1.613    0.000 _methods.py:37(_any)
     177909    0.862    0.000   33.737    0.000 arrayprint.py:237(_get_formatdict)
     177909    0.370    0.000   34.214    0.000 arrayprint.py:273(_get_format_function)
     177909    0.686    0.000   39.971    0.000 arrayprint.py:315(_array2string)
  533727/177909    0.674    0.000   40.351    0.000 arrayprint.py:340(array2string)
    1224652    0.960    0.000    1.554    0.000 arrayprint.py:467(_extendLine)
     177909    1.671    0.000    4.320    0.000 arrayprint.py:475(_formatArray)
     533727    0.682    0.000   29.496    0.000 arrayprint.py:543(__init__)
     533727   10.999    0.000   28.814    0.000 arrayprint.py:557(fillFormat)
     355336    1.600    0.000    5.432    0.000 arrayprint.py:589(&lt;listcomp&gt;)
    2416068    2.677    0.000    3.832    0.000 arrayprint.py:642(_digits)
     177909    0.720    0.000    2.378    0.000 arrayprint.py:652(__init__)
    1224652    1.057    0.000    1.057    0.000 arrayprint.py:665(__call__)
     533727    0.147    0.000    0.147    0.000 arrayprint.py:674(__init__)
     177909    0.227    0.000    0.319    0.000 arrayprint.py:702(__init__)
     177909    0.415    0.000   17.986    0.000 arrayprint.py:713(__init__)
     177909    0.166    0.000    0.166    0.000 arrayprint.py:730(__init__)
     177909    0.046    0.000    0.046    0.000 arrayprint.py:751(__init__)
          1    0.000    0.000    0.000    0.000 enum.py:265(__call__)
          1    0.000    0.000    0.000    0.000 enum.py:515(__new__)
          1    0.000    0.000    0.000    0.000 enum.py:544(_missing_)
     177909    0.206    0.000    0.206    0.000 enum.py:552(__str__)
     177909    0.269    0.000    0.475    0.000 enum.py:564(__format__)
     755408    0.248    0.000    0.366    0.000 enum.py:579(__hash__)
     200000    0.037    0.000    0.037    0.000 enum.py:592(name)
      27976    0.005    0.000    0.005    0.000 enum.py:597(value)
     200524    0.443    0.000    0.641    0.000 eventgen.py:115(_push)
     200001    0.492    0.000    0.885    0.000 eventgen.py:122(pop)
     200000    0.892    0.000    1.036    0.000 eventgen.py:137(ce_str)
      13988    0.017    0.000    0.034    0.000 eventgen.py:15(__lt__)
      99676    0.168    0.000    0.911    0.000 eventgen.py:44(event_new)
      79335    0.096    0.000    0.520    0.000 eventgen.py:52(event_end)
      11689    0.078    0.000    0.261    0.000 eventgen.py:61(event_new_handoff)
       9824    0.014    0.000    0.098    0.000 eventgen.py:90(event_end_handoff)
      77441    0.295    0.000    0.380    0.000 eventgen.py:94(reassign)
     177909    0.177    0.000    0.555    0.000 fromnumeric.py:1364(ravel)
     200001    0.093    0.000    0.464    0.000 fromnumeric.py:1471(nonzero)
     289159    0.542    0.000    2.148    0.000 fromnumeric.py:1710(sum)
     533727    0.637    0.000    2.956    0.000 fromnumeric.py:1866(any)
     200001    0.120    0.000    0.372    0.000 fromnumeric.py:55(_wrapfunc)
          4    0.000    0.000    0.000    0.000 genericpath.py:117(_splitext)
         49    0.000    0.000    0.001    0.000 grid.py:172(neighbors1)
         49    0.001    0.000    0.001    0.000 grid.py:195(neighbors2)
  533727/177909    0.311    0.000   40.472    0.000 numeric.py:1927(array_str)
    1067454    1.724    0.000    4.091    0.000 numeric.py:2692(seterr)
    1067454    1.466    0.000    1.603    0.000 numeric.py:2792(geterr)
     533727    0.299    0.000    0.422    0.000 numeric.py:3085(__init__)
     533727    0.411    0.000    2.588    0.000 numeric.py:3089(__enter__)
     533727    0.461    0.000    2.374    0.000 numeric.py:3094(__exit__)
     177909    0.064    0.000    0.151    0.000 numeric.py:463(asarray)
     711636    0.223    0.000    0.503    0.000 numeric.py:534(asanyarray)
          4    0.000    0.000    0.000    0.000 posixpath.py:119(splitext)
          4    0.000    0.000    0.000    0.000 posixpath.py:142(basename)
          4    0.000    0.000    0.000    0.000 posixpath.py:39(_get_sep)
          6    0.000    0.000    0.000    0.000 posixpath.py:50(normcase)
          4    0.000    0.000    0.000    0.000 process.py:137(name)
          4    0.000    0.000    0.000    0.000 process.py:35(current_process)
          1    0.000    0.000    0.000    0.000 signal.py:25(_int_to_enum)
          2    0.000    0.000    0.000    0.000 signal.py:35(_enum_to_int)
          1    0.000    0.000    0.000    0.000 signal.py:45(signal)
      99627    0.062    0.000    0.062    0.000 stats.py:38(new)
      20292    0.028    0.000    0.039    0.000 stats.py:42(new_rej)
      88750    0.047    0.000    0.047    0.000 stats.py:48(end)
      11623    0.005    0.000    0.005    0.000 stats.py:51(hoff_new)
       1799    0.001    0.000    0.002    0.000 stats.py:54(hoff_rej)
      22091    0.012    0.000    0.012    0.000 stats.py:58(rej)
     200000    0.234    0.000    1.513    0.000 stats.py:64(iter)
          1    0.000    0.000    0.000    0.000 stats.py:69(n_iter)
          1    0.000    0.000    0.000    0.000 stats.py:86(endsim)
          1    0.000    0.000    0.001    0.001 strats.py:189(get_init_action)
     200000    1.070    0.000   49.964    0.000 strats.py:193(get_action)
     177909    1.348    0.000    1.937    0.000 strats.py:220(execute_action)
     200001    4.572    0.000   47.626    0.000 strats.py:243(optimal_ch)
      89158    0.071    0.000    0.958    0.000 strats.py:299(reward)
      89158    0.018    0.000    0.018    0.000 strats.py:308(discount)
    1242355    0.944    0.000    0.944    0.000 strats.py:333(get_qval)
      89158    0.160    0.000    0.160    0.000 strats.py:336(update_qval)
          1    0.000    0.000   58.746   58.746 strats.py:40(init_sim)
          1    1.271    1.271   58.745   58.745 strats.py:49(_simulate)
          4    0.000    0.000    0.000    0.000 threading.py:1076(name)
          4    0.000    0.000    0.000    0.000 threading.py:1230(current_thread)
     227976    0.120    0.000    0.162    0.000 types.py:135(__get__)
     177909    0.079    0.000    0.079    0.000 {built-in method _functools.reduce}
     200001    0.192    0.000    0.222    0.000 {built-in method _heapq.heappop}
     200524    0.084    0.000    0.088    0.000 {built-in method _heapq.heappush}
     310143    0.064    0.000    0.064    0.000 {built-in method _operator.gt}
     843054    0.152    0.000    0.152    0.000 {built-in method _operator.lt}
          1    0.000    0.000    0.000    0.000 {built-in method _signal.signal}
          8    0.000    0.000    0.000    0.000 {built-in method _thread.get_ident}
          2    0.000    0.000    0.000    0.000 {built-in method _warnings.warn}
          1    0.000    0.000   58.746   58.746 {built-in method builtins.exec}
     200001    0.056    0.000    0.056    0.000 {built-in method builtins.getattr}
    1067468    0.228    0.000    0.228    0.000 {built-in method builtins.hasattr}
     755408    0.118    0.000    0.118    0.000 {built-in method builtins.hash}
     467082    0.164    0.000    0.164    0.000 {built-in method builtins.isinstance}
     533727    0.107    0.000    0.107    0.000 {built-in method builtins.issubclass}
   10361766    1.076    0.000    1.076    0.000 {built-in method builtins.len}
     533441    0.304    0.000    0.304    0.000 {built-in method builtins.max}
     533923    0.198    0.000    0.198    0.000 {built-in method builtins.min}
     889545    0.368    0.000    0.368    0.000 {built-in method numpy.core.multiarray.array}
     111251    0.101    0.000    0.101    0.000 {built-in method numpy.core.multiarray.where}
    2134908    0.377    0.000    0.377    0.000 {built-in method numpy.core.umath.geterrobj}
    1067454    0.524    0.000    0.524    0.000 {built-in method numpy.core.umath.seterrobj}
         14    0.000    0.000    0.000    0.000 {built-in method posix.fspath}
          4    0.000    0.000    0.000    0.000 {built-in method posix.getpid}
          4    0.000    0.000    0.000    0.000 {built-in method sys._getframe}
          5    0.000    0.000    0.000    0.000 {built-in method time.time}
          8    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.RLock' objects}
     533727    0.299    0.000    1.912    0.000 {method 'any' of 'numpy.ndarray' objects}
        875    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
      16544    0.119    0.000    0.119    0.000 {method 'choice' of 'mtrand.RandomState' objects}
     533727    0.872    0.000    0.872    0.000 {method 'compress' of 'numpy.ndarray' objects}
          1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
     188835    0.641    0.000    0.641    0.000 {method 'exponential' of 'mtrand.RandomState' objects}
          4    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
          4    0.000    0.000    0.000    0.000 {method 'flush' of '_io.TextIOWrapper' objects}
          8    0.000    0.000    0.000    0.000 {method 'get' of 'dict' objects}
     355818    0.069    0.000    0.069    0.000 {method 'item' of 'numpy.ndarray' objects}
     200001    0.196    0.000    0.196    0.000 {method 'nonzero' of 'numpy.ndarray' objects}
     533727    0.123    0.000    0.123    0.000 {method 'pop' of 'dict' objects}
      11689    0.053    0.000    0.053    0.000 {method 'randint' of 'mtrand.RandomState' objects}
     168494    0.128    0.000    0.128    0.000 {method 'random_sample' of 'mtrand.RandomState' objects}
     177909    0.232    0.000    0.232    0.000 {method 'ravel' of 'numpy.ndarray' objects}
    1889376    5.023    0.000    5.023    0.000 {method 'reduce' of 'numpy.ufunc' objects}
          8    0.000    0.000    0.000    0.000 {method 'release' of '_thread.RLock' objects}
         12    0.000    0.000    0.000    0.000 {method 'rfind' of 'str' objects}
     533727    0.155    0.000    0.155    0.000 {method 'rpartition' of 'str' objects}
    4865786    1.100    0.000    1.100    0.000 {method 'rstrip' of 'str' objects}
          8    0.000    0.000    0.000    0.000 {method 'write' of '_io.TextIOWrapper' objects}
  </code></pre>
  
  <p>And here's for the laptop:</p>
  
  <pre><code>        27738517 function calls (26673571 primitive calls) in 28.612 seconds
  
     Ordered by: standard name
  
     ncalls  tottime  percall  cumtime  percall filename:lineno(function)
          1    0.000    0.000   28.612   28.612 &lt;string&gt;:1(&lt;module&gt;)
          4    0.000    0.000    0.000    0.000 __init__.py:120(getLevelName)
     566894    0.244    0.000    0.720    0.000 __init__.py:1284(debug)
          2    0.000    0.000    0.000    0.000 __init__.py:1296(info)
          2    0.000    0.000    0.000    0.000 __init__.py:1308(warning)
          2    0.000    0.000    0.000    0.000 __init__.py:1320(warn)
          4    0.000    0.000    0.000    0.000 __init__.py:1374(findCaller)
          4    0.000    0.000    0.000    0.000 __init__.py:1404(makeRecord)
          4    0.000    0.000    0.000    0.000 __init__.py:1419(_log)
          4    0.000    0.000    0.000    0.000 __init__.py:1444(handle)
          4    0.000    0.000    0.000    0.000 __init__.py:1498(callHandlers)
     566898    0.166    0.000    0.166    0.000 __init__.py:1528(getEffectiveLevel)
     566898    0.309    0.000    0.476    0.000 __init__.py:1542(isEnabledFor)
          4    0.000    0.000    0.000    0.000 __init__.py:157(&lt;lambda&gt;)
          4    0.000    0.000    0.000    0.000 __init__.py:251(__init__)
          4    0.000    0.000    0.000    0.000 __init__.py:329(getMessage)
          4    0.000    0.000    0.000    0.000 __init__.py:387(usesTime)
          4    0.000    0.000    0.000    0.000 __init__.py:390(format)
          4    0.000    0.000    0.000    0.000 __init__.py:540(usesTime)
          4    0.000    0.000    0.000    0.000 __init__.py:546(formatMessage)
          4    0.000    0.000    0.000    0.000 __init__.py:562(format)
          8    0.000    0.000    0.000    0.000 __init__.py:703(filter)
          8    0.000    0.000    0.000    0.000 __init__.py:807(acquire)
          8    0.000    0.000    0.000    0.000 __init__.py:814(release)
          4    0.000    0.000    0.000    0.000 __init__.py:827(format)
          4    0.000    0.000    0.000    0.000 __init__.py:850(handle)
          4    0.000    0.000    0.000    0.000 __init__.py:969(flush)
          4    0.000    0.000    0.000    0.000 __init__.py:980(emit)
     288946    0.112    0.000    1.643    0.000 _methods.py:31(_sum)
     177491    0.330    0.000    0.330    0.000 arrayprint.py:256(_get_formatdict)
     177491    0.169    0.000    3.542    0.000 arrayprint.py:259(&lt;lambda&gt;)
     177491    0.465    0.000    4.419    0.000 arrayprint.py:299(_get_format_function)
     177491    0.623    0.000    9.729    0.000 arrayprint.py:343(_array2string)
  532473/177491    0.987    0.000   10.679    0.000 arrayprint.py:381(wrapper)
  532473/177491    0.721    0.000   10.150    0.000 arrayprint.py:399(array2string)
    1225350    0.971    0.000    1.470    0.000 arrayprint.py:527(_extendLine)
     177491    1.458    0.000    3.920    0.000 arrayprint.py:535(_formatArray)
     177491    0.768    0.000    3.373    0.000 arrayprint.py:712(__init__)
    1225350    0.960    0.000    0.960    0.000 arrayprint.py:725(__call__)
          1    0.000    0.000    0.000    0.000 enum.py:265(__call__)
          1    0.000    0.000    0.000    0.000 enum.py:515(__new__)
          1    0.000    0.000    0.000    0.000 enum.py:544(_missing_)
     177491    0.209    0.000    0.209    0.000 enum.py:552(__str__)
     177491    0.316    0.000    0.525    0.000 enum.py:564(__format__)
     755255    0.238    0.000    0.352    0.000 enum.py:579(__hash__)
     200000    0.039    0.000    0.039    0.000 enum.py:592(name)
      28626    0.005    0.000    0.005    0.000 enum.py:597(value)
     200505    0.443    0.000    0.643    0.000 eventgen.py:115(_push)
     200001    0.474    0.000    0.863    0.000 eventgen.py:122(pop)
     200000    0.834    0.000    0.983    0.000 eventgen.py:137(ce_str)
      14313    0.017    0.000    0.035    0.000 eventgen.py:15(__lt__)
      99673    0.186    0.000    0.939    0.000 eventgen.py:44(event_new)
      78949    0.094    0.000    0.500    0.000 eventgen.py:52(event_end)
      11887    0.078    0.000    0.261    0.000 eventgen.py:61(event_new_handoff)
       9996    0.017    0.000    0.103    0.000 eventgen.py:90(event_end_handoff)
      77374    0.284    0.000    0.364    0.000 eventgen.py:94(reassign)
     177491    0.195    0.000    0.595    0.000 fromnumeric.py:1380(ravel)
     200001    0.098    0.000    0.490    0.000 fromnumeric.py:1487(nonzero)
     288946    0.590    0.000    2.352    0.000 fromnumeric.py:1730(sum)
     200001    0.130    0.000    0.392    0.000 fromnumeric.py:55(_wrapfunc)
          4    0.000    0.000    0.000    0.000 genericpath.py:117(_splitext)
         49    0.000    0.000    0.001    0.000 grid.py:172(neighbors1)
         49    0.001    0.000    0.001    0.000 grid.py:195(neighbors2)
  532473/177491    0.365    0.000   10.826    0.000 numeric.py:1905(array_str)
     177491    0.062    0.000    0.151    0.000 numeric.py:463(asarray)
     177491    0.051    0.000    0.104    0.000 numeric.py:534(asanyarray)
          4    0.000    0.000    0.000    0.000 posixpath.py:119(splitext)
          4    0.000    0.000    0.000    0.000 posixpath.py:142(basename)
          4    0.000    0.000    0.000    0.000 posixpath.py:39(_get_sep)
          6    0.000    0.000    0.000    0.000 posixpath.py:50(normcase)
          4    0.000    0.000    0.000    0.000 process.py:137(name)
          4    0.000    0.000    0.000    0.000 process.py:35(current_process)
          1    0.000    0.000    0.000    0.000 signal.py:25(_int_to_enum)
          2    0.000    0.000    0.000    0.000 signal.py:35(_enum_to_int)
          1    0.000    0.000    0.000    0.000 signal.py:45(signal)
      99624    0.066    0.000    0.066    0.000 stats.py:38(new)
      20675    0.028    0.000    0.040    0.000 stats.py:42(new_rej)
      88545    0.045    0.000    0.045    0.000 stats.py:48(end)
      11831    0.006    0.000    0.006    0.000 stats.py:51(hoff_new)
       1835    0.001    0.000    0.002    0.000 stats.py:54(hoff_rej)
      22510    0.013    0.000    0.013    0.000 stats.py:58(rej)
     200000    0.261    0.000    1.490    0.000 stats.py:64(iter)
          1    0.000    0.000    0.000    0.000 stats.py:69(n_iter)
          1    0.000    0.000    0.000    0.000 stats.py:86(endsim)
          1    0.000    0.000    0.000    0.000 strats.py:189(get_init_action)
     200000    1.234    0.000   19.760    0.000 strats.py:193(get_action)
     177490    1.294    0.000    1.860    0.000 strats.py:220(execute_action)
     200001    3.897    0.000   17.128    0.000 strats.py:243(optimal_ch)
      88945    0.074    0.000    1.112    0.000 strats.py:299(reward)
      88945    0.017    0.000    0.017    0.000 strats.py:308(discount)
    1241938    0.681    0.000    0.681    0.000 strats.py:333(get_qval)
      88945    0.167    0.000    0.167    0.000 strats.py:336(update_qval)
          1    0.000    0.000   28.612   28.612 strats.py:40(init_sim)
          1    1.383    1.383   28.611   28.611 strats.py:49(_simulate)
          4    0.000    0.000    0.000    0.000 threading.py:1076(name)
          4    0.000    0.000    0.000    0.000 threading.py:1230(current_thread)
     228626    0.122    0.000    0.166    0.000 types.py:135(__get__)
     177491    0.075    0.000    0.075    0.000 {built-in method _functools.reduce}
     200001    0.203    0.000    0.234    0.000 {built-in method _heapq.heappop}
     200505    0.079    0.000    0.083    0.000 {built-in method _heapq.heappush}
     320262    0.068    0.000    0.068    0.000 {built-in method _operator.gt}
     832731    0.136    0.000    0.136    0.000 {built-in method _operator.lt}
          1    0.000    0.000    0.000    0.000 {built-in method _signal.signal}
     532481    0.090    0.000    0.090    0.000 {built-in method _thread.get_ident}
          2    0.000    0.000    0.000    0.000 {built-in method _warnings.warn}
          1    0.000    0.000   28.612   28.612 {built-in method builtins.exec}
     200001    0.066    0.000    0.066    0.000 {built-in method builtins.getattr}
         14    0.000    0.000    0.000    0.000 {built-in method builtins.hasattr}
     755255    0.113    0.000    0.113    0.000 {built-in method builtins.hash}
     532473    0.092    0.000    0.092    0.000 {built-in method builtins.id}
     466451    0.166    0.000    0.166    0.000 {built-in method builtins.isinstance}
     532473    0.083    0.000    0.083    0.000 {built-in method builtins.issubclass}
    3750044    0.325    0.000    0.325    0.000 {built-in method builtins.len}
     177687    0.091    0.000    0.091    0.000 {built-in method builtins.max}
        196    0.000    0.000    0.000    0.000 {built-in method builtins.min}
     354982    0.142    0.000    0.142    0.000 {built-in method numpy.core.multiarray.array}
     111456    0.095    0.000    0.095    0.000 {built-in method numpy.core.multiarray.where}
         14    0.000    0.000    0.000    0.000 {built-in method posix.fspath}
          4    0.000    0.000    0.000    0.000 {built-in method posix.getpid}
          4    0.000    0.000    0.000    0.000 {built-in method sys._getframe}
          5    0.000    0.000    0.000    0.000 {built-in method time.time}
          8    0.000    0.000    0.000    0.000 {method 'acquire' of '_thread.RLock' objects}
     532473    0.089    0.000    0.089    0.000 {method 'add' of 'set' objects}
        875    0.000    0.000    0.000    0.000 {method 'append' of 'list' objects}
      16345    0.110    0.000    0.110    0.000 {method 'choice' of 'mtrand.RandomState' objects}
          1    0.000    0.000    0.000    0.000 {method 'disable' of '_lsprof.Profiler' objects}
     532473    0.097    0.000    0.097    0.000 {method 'discard' of 'set' objects}
     188618    0.633    0.000    0.633    0.000 {method 'exponential' of 'mtrand.RandomState' objects}
          4    0.000    0.000    0.000    0.000 {method 'find' of 'str' objects}
          4    0.000    0.000    0.000    0.000 {method 'flush' of '_io.TextIOWrapper' objects}
          8    0.000    0.000    0.000    0.000 {method 'get' of 'dict' objects}
     354982    0.066    0.000    0.066    0.000 {method 'item' of 'numpy.ndarray' objects}
     200001    0.196    0.000    0.196    0.000 {method 'nonzero' of 'numpy.ndarray' objects}
      11887    0.052    0.000    0.052    0.000 {method 'randint' of 'mtrand.RandomState' objects}
     167895    0.157    0.000    0.157    0.000 {method 'random_sample' of 'mtrand.RandomState' objects}
     177491    0.251    0.000    0.251    0.000 {method 'ravel' of 'numpy.ndarray' objects}
     643928    2.511    0.000    2.511    0.000 {method 'reduce' of 'numpy.ufunc' objects}
          8    0.000    0.000    0.000    0.000 {method 'release' of '_thread.RLock' objects}
         12    0.000    0.000    0.000    0.000 {method 'rfind' of 'str' objects}
    2451118    0.328    0.000    0.328    0.000 {method 'rstrip' of 'str' objects}
          8    0.000    0.000    0.000    0.000 {method 'write' of '_io.TextIOWrapper' objects}
  </code></pre>