Le 17/11/18 à 15:39, Kris Kuhlman a écrit :
I am using pypy to run numerical integration calculations with the arbitrary precision library mpmath (http://mpmath.org).

I am using pypy2-v6.0.0-osx64 and version 1.0 of mpmath (from github). I install mpmath with pypy and use the native (python only) version; I am not using the gmp backend.

I have noticed that sometimes seemingly small changes in my scripts result in big changes in runtime with pypy, and I was wondering if there were some jit options or settings I could change to improve things. Following advice from the pypy website, I tried using vmprof to profile one of my scripts.

I installed vmprof into pypy using pip, starting with "pypy -m ensurepip".

First I tried to run one of my scripts with vmprof, which typically take <10 minutes to run, but it ran for a few hours and so I eventually killed it (it doesn't respond to ^C, so I have to put it into the background and kill it explicitly with the kill command).

Then I tried just a small test script like the following:

cat -> test.py
import mpmath as mp
print mp.pi
^D

This runs fine from pypy as:

$pypy test.py

3.14159265358979



but running this same script using vmprof and pypy as


pypy -m vmprof -o output.log test.py


uses 4GB of ram, 100% processor, and if left running will generate a output.log file of growing size (so I kill it).


If I run the following:


cat -> test2.py

x = 3.14159

print x

^D


vmprof runs quickly and generates a small output.log file (~400kb). As an aside, if I try to use the --web option, it hangs on "Uploading to http://vmprof.com...";  If I try to go to this website in my browser there is an error page about bad gateway from Cloudflare.


I seem to be able to use mpmath with pypy just fine, but the combination of pypy, mpmath, and vmprof seems to not work.


Any suggestions?  I am not an experienced vmprof user.

I tried your test script on Linux and everything works as expected locally. So I guess the issue is specific to OS X, or to your own system.

Try using the --no-native option, as in 'pypy -m vmprof -o output.log --no-native test.py'. That should disable most of the platform-specific code, and it doesn't lose much information on pypy anyway.


_______________________________________________
pypy-dev mailing list
pypy-dev@python.org
https://mail.python.org/mailman/listinfo/pypy-dev

Reply via email to