vmprof-python icon indicating copy to clipboard operation
vmprof-python copied to clipboard

'no stats' when profiling numpy on anaconda 3.5

Open trofimander opened this issue 8 years ago • 10 comments

Profiling the following script:

import numpy as np

n = 5000
a = np.random.random((n, n))
b = np.random.random((n, n))
c = np.dot(np.abs(a), b)

Produces:

macbook-pro-4:test_profiler0 traff$ /Users/traff/anaconda/bin/python3.5 -m vmprof test_numpy.py 
no stats
macbook-pro-4

Mac OSX 10.11.5 Anaconda 3 - 4.0.0 - 64 vmprof 0.2.7

trofimander avatar Jun 23 '16 13:06 trofimander

First, if your program takes only a few milliseconds to run, that may be too fast for vmprof to collect any data at all. Second, vmprof collects only data about pure Python code, but numpy is implemented almost entirely in C, which is why you won't see anything useful with your example.

Btw does anyone know of a Python profiler that can look into the C stack?

jonashaag avatar Jun 23 '16 16:06 jonashaag

Released version doesn't support Python 3.5.1. See #60

methane avatar Jun 23 '16 16:06 methane

@methane Thanks!

trofimander avatar Jun 23 '16 16:06 trofimander

@fijal Could you please release the fix?

trofimander avatar Jun 23 '16 16:06 trofimander

I've release the fix

fijal avatar Jun 27 '16 08:06 fijal

To be precise: I've release the mentioned pull request, but not the fix for this issue, will reopen that one

fijal avatar Jun 27 '16 08:06 fijal

I have tried the same script now with 0.4.3 on mac os x 10.12.3. It revealed an issue on mac: a signal is delivered after vmprof.disable() is called (which terminated the program with SIGPROF). The signal handler is now set to SIG_IGN (signal ignore) which passes. I'm trying to find a better solution though.

Here is the native profile: http://vmprof.com/#/567aa150-5927-4867-b22d-dbb67ac824ac

planrich avatar Mar 27 '17 19:03 planrich

Okay I seem encountered this issue, tired with python 3.5.1 or 3.6.1 both not working. vmprof version 0.4.3

python -m vmprof -o output.log xx.py

(xx.py print stuff and output.log generated)

vmprofshow output.log

Traceback (most recent call last):
  File "/Users/fuyangliu/Tradeshift/supplier-matching/python3.6-env/bin/vmprofshow", line 11, in <module>
    sys.exit(main())
  File "/Users/fuyangliu/Tradeshift/supplier-matching/python3.6-env/lib/python3.6/site-packages/vmprof/show.py", line 160, in main
    pp.show(args.profile)
  File "/Users/fuyangliu/Tradeshift/supplier-matching/python3.6-env/lib/python3.6/site-packages/vmprof/show.py", line 64, in show
    tree = stats.get_tree()
  File "/Users/fuyangliu/Tradeshift/supplier-matching/python3.6-env/lib/python3.6/site-packages/vmprof/stats.py", line 106, in get_tree
    top = self.get_top(self.profiles)
  File "/Users/fuyangliu/Tradeshift/supplier-matching/python3.6-env/lib/python3.6/site-packages/vmprof/stats.py", line 97, in get_top
    raise EmptyProfileFile()
vmprof.stats.EmptyProfileFile

Is this a related problem?

Stuff in xx.py

def f_a():
    for x in range(100):
        print(x)

if __name__=='__main__':
    f_a()

liufuyang avatar Mar 30 '17 15:03 liufuyang

it seems that 100 iterations is not enough for a single signal to occur. I get the same issue, try to run at least 1000 iterations...

planrich avatar Apr 01 '17 14:04 planrich

It now displays the following (the warning is only displayed if the profiling took less than 1 second):

WARNING: The profiling completed in less than 1 seconds. Please run your programs longer!
No stack trace has been recorded (profile is empty)! Did your program not run long enough?

planrich avatar Apr 01 '17 14:04 planrich