<p>but main is the program that contains everything.<br></p>
<p>I used the profile in this way:</p>
<p>import cProfile</p>
<p>import pstats<br></p>
<p>def mymain():<br><br></p>
<p>#all the code<br></p>
<p>#end of main indentation<br></p>
<p>cProfile.run('mymain()', 'restats', 'time')<br><br></p>
<p>p = pstats.Stats('restats')</p>
<p>p.strip_dirs().sort_stats('name')</p>
<p>p.sort_stats('time').print_stats(10)<br></p>
<p>So all the function I used are contained in main(), so even all the others that are appeared.<br></p>
<p>Gabriele<br><br></p>
<div class="gmail_quote">2014-04-10 19:41 GMT-04:00 Martin A. Brown <span dir="ltr"><<a href="mailto:martin@linux-ip.net" target="_blank">martin@linux-ip.net</a>></span>:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>
Gabriele,<div><br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
        21071736 function calls in 199.883 seconds<br>
</blockquote>
<br></div>
The 21 million function calls isn't really a surprise to me, given 18 million calls to file.write().  Given that the majority of the time is still spent in skymaps5.py, I think you'll need to instrument that a bit more to figure out where the hotspot is.<br>


<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div>
  Ordered by: internal time<br>
  List reduced from 188 to 10 due to restriction <10><br>
<br>
  ncalls  tottime  percall  cumtime  percall filename:lineno(function)<br>
       1  149.479  149.479  199.851  199.851 skymaps5.py:16(mymain)<br>
18101000   28.682    0.000   28.682    0.000 {method 'write' of 'file'<br>
objects}<br>
<br></div><div>
the major time is required by mymain that is the whole program. the write on file is an operation that I do in the end but if I increase the number of data it doesn't increase (I tried doubing the sample of values and I know why it's behaving in this way) the third are interpolate and kappa: the two functions (one called inside the other one)<br>


</div></blockquote>
<br>
This is a good finding, in fact.  Now, you know which module contains the bottleneck.  Is your CPU pegged when you run that skymap5.py code?  Can you run the profiler on the skymaps5.py code, too, to locate the specific hotspot?  Great to see that you are using the profiler, effectively, too!<div>

<br>
<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
So they are the ones that are taking time.<br>
Now what can I do?<br>
</blockquote>
<br></div>
I think you now need to profile skymaps5.py code?  Specifically the stuff in main().<br>
<br>
OK, so I have not myself used scipy.interpolate.interp1d before, but I went to have a look at it.  So, you feed interp1d() an x and a y (e.g. a plot line on a diagram), and it essentially produces its best guess of a function which will fit that curve, correct?<br>


<br>
Well, this is how it performs with random input and an identity function:<br>
<br>
  element count 100, duration 0.000<br>
  element count 1000, duration 0.001<br>
  element count 10000, duration 0.005<br>
  element count 100000, duration 0.055<br>
  element count 1000000, duration 0.858<br>
  element count 10000000, duration 30.404<br>
<br>
So, with 10 million inputs on an admittedly brain-dead function, there's not a performance bottleneck.  If you can find the parts of your skymaps5.py code that are the bottleneck, then you could post it here.<br>
<br>
I hadn't thought of using interpolate, myself, as I didn't even know it existed.<br>
<br>
Thanks and good luck,<br>
<br>
-Martin<div><div><br>
<br>
-- <br>
Martin A. Brown<br>
<a href="http://linux-ip.net/" target="_blank">http://linux-ip.net/</a><br>
</div></div></blockquote></div><br>