繁体   English   中英

尝试在Python脚本中运行Pyflame时出现错误

[英]Getting errors when trying to run Pyflame inside Python script

目的:在另一个Python脚本中使用Pyflame对Python脚本进行概要分析。

详细信息:代码在具有Ubuntu 14.04 LTS的虚拟机上运行。

1)要运行我使用的配置文件脚本:

process = subprocess.Popen(["python", "python_script.py"])

2)然后,我尝试将Pyflame附加到该过程中(将此行作为冒烟测试进行处理):

subprocess.Popen(["sudo pyflame -s 60 -r 0.0001 " + str(process.pid)],
                      shell=True)

问题:在上面的语句中没有sudo ,我Failed to attach to PID ...: Operation not permitted错误。

使用sudoFailed to locate libpython named libpython2.7.so

如果有任何关于使语句2)工作的想法,无论有无sudo ,我将不胜感激!

显然,如果满足以下条件,Pyflame将返回您得到的第二个错误:

  • 您为Python 2.X编译了Pyflame。
  • 您尝试分析在Python 3.X解释器下运行的脚本。

这里这里看看Pyflame的源代码。 当您运行Pyflame时,它会查看解释器的内存空间,并尝试找到libpython2.7.so 对于Python 3.X解释器,该库不存在。

因此,我建议您尝试以下操作:

  1. 运行以下命令。 您将确认库是否已正确加载到您的解释器中。 cat /proc/{YOUR_PID}/maps | grep libpython2.7
  2. 如果不是,请考虑以下因素:
    1. 也许您描述了错误的进程(即,它不是Python进程)。
    2. 也许这是一个Python 3.X进程,在这种情况下,您需要重新编译Pyflame才能定位到Python3.X。

要在编译Pyflame时使用Python 3.X,请参考文档。 提示:您需要将调用更改为./configure ,如下所示:

./configure --with-python=python3

此外,如果您无法在环境中将python3识别为库,则需要符号链接到Python 3.X解释器的可执行文件。 这有点超出范围,因此您可以查看我的个人博客以了解更多详细信息(请参阅帖子“使用Uber的Pyflame和日志解决缩放问题”)。 免责声明:我是该帖子的作者。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM