Brendan Gregg的CPU Flame Graph是一种基于调用堆栈在一段时间内可视化CPU使用情况的方法.
他的FlameGraph github项目提供了一种与语言无关的绘制这些图形的方法:
对于每种语言,FlameGraph都需要一种以如下行的形式提供堆栈输入的方法:
grandparent_func;parent_func;func 42
Run Code Online (Sandbox Code Playgroud)
这意味着检测程序被观察到运行函数func
,其中parent_func
调用它从顶级函数调用grandparent_func
.它说调用堆栈被观察了42次.
如何从Python程序中收集堆栈信息并将其提供给FlameGraph?
对于奖励积分:如何扩展以便显示C和Python堆栈,甚至是Linux上的内核(与Brendan网站上的某些Java和node.js火焰图类似)?
我有15个录音带,其中一个我认为包含了我祖母和我自己说话的旧录音.寻找合适地点的快速尝试并未将其提升.我不想听20个小时的磁带来找到它.该位置可能不在其中一个磁带的开头.大多数内容似乎分为三类 - 按总长度排列,最长的是:静音,语音广播和音乐.
我计划将所有磁带转换为数字格式,然后再次查看录制内容.显而易见的方法是在我做其他事情时在后台播放它们.这对我来说太简单了,所以:是否有任何开源库或其他代码可以让我找到,以便提高复杂性和实用性:
我更喜欢Python,Java或C.
由于我对该领域一无所知,因此未能得到答案,关于搜索词的提示将受到赞赏.
据我所知,我可以轻松地花20多个小时.
我想使用gdb 7的支持来调试Python"劣质进程".
我需要做什么?
例如:
下级Python的配置脚本需要运行哪些标志?
劣质Python进程是否必须是Python 2.7或更高版本(我看到gdb支持的部分是在Python源代码树中提交的那个)?或者只是gdb进程本身需要Python 2.7?
需要安装哪些文件可能未被所有发行版打包?例如,在packages.ubuntu.com上,我没有获得python-gdb.py的任何命中,我相信这是必需的.
知道特定发行版需要什么是非常方便的.我对Ubuntu和Centos需要什么特别感兴趣.
SQLAlchemy 事务如何与连接解除关联?我应该做什么来防止这种情况发生?
我有一个像这样的 setup.py :
#!/usr/bin/env python
from setuptools import setup, find_packages
setup(
name="myproject",
package_dir={"": "src"},
packages=find_packages("src"),
entry_points={
"console_scripts": [
"my-script = myproject.myscript:entrypoint",
],
},
)
Run Code Online (Sandbox Code Playgroud)
如何entry_points
使用 setuptools 在 pyproject.toml 中编写该配置?
我猜测类似这样的事情,继续setuptools 的 pyproject.toml 文档,它说我需要在引用入口点的文档之后使用“INI 格式” ,但它似乎没有给出示例,我的猜测关于如何将 setuptools 语法与 pyproject.toml 语法结合起来是错误的(我从pip install -e .
该报告中得到了回溯pip._vendor.tomli.TOMLDecodeError: Invalid value
,指向entry-points
pyproject.toml 中的行):
[build-system]
requires = ["setuptools", "setuptools-scm"]
build-backend = "setuptools.build_meta"
[metadata]
name = "myproject"
[tool.setuptools]
package-dir = {"" = "src"}
[tool.setuptools.packages.find]
where = ["src"]
[tool.setuptools.dynamic]
entry-points …
Run Code Online (Sandbox Code Playgroud) python program-entry-point setuptools python-packaging pyproject.toml
我通常的功能/错误分支工作流程是这样的:
假设无法点击 PR 上的合并按钮,因为我的功能分支现在与 master 发生冲突。在这一点上,我通常想解决与 master 的冲突,我想在我的功能分支上这样做,这样我就可以让正在审查我的代码的人看到:
但是,我可能不想变基,因为代码审查已经在进行中(有时我无论如何都要变基,但有时我想避免它)。
我如何可靠有效地使用 git 来实现这一目标?
我目前所做的是这些事情的混合:
git merge master
; (查看哪个文件有冲突,然后 git annotate 以找到相关的提交); git reset --hard origin/my-feature-branch
; git cherry-pick <some commit>
(或者可能手动进行一些更改); (重复))有时这不起作用,因为冲突是空的,所以我不知道要注释什么才能找到正确的提交。 编辑:事实上,在空冲突的情况下,我想如果没有合并或变基是不可能解决的(但在其他情况下是可能的——见下面的例子)。
当它起作用时,似乎 git 可以以更自动化的方式帮助我完成很多工作。
我也试过git-imerge
——这似乎不是专门为此目的而设计的,它也以未处理的异常退出。
这是一个具体的工作示例,因为这里的答案存在怀疑,即有时可以解决我在此处描述的分支上的冲突而无需合并或重新定位(请注意,这并未显示上述工作流程的每个步骤,并且仅演示“在不合并或变基的情况下解决分支上的冲突”部分):
$ mkdir -p conflict-example/upstream
$ cd conflict-example/upstream
$ git init .
Initialised empty Git repository in /tmp/conflict-example/upstream/.git/
$ …
Run Code Online (Sandbox Code Playgroud) 当我apk add python3
在运行alpine发行版的Docker容器中时,像这样的组合键Ctrl <left arrow>
,而不是按整个单词移动光标,而是打印以下内容(在这里,我输入了“垃圾邮件鸡蛋”,然后按住控制并按下向左箭头键):
Python 3.5.1 (default, Dec 9 2015, 14:41:32)
[GCC 5.2.0] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>> spam ham;5D
Run Code Online (Sandbox Code Playgroud)
只是apk add
荷兰国际集团readline
或pip3 install
荷兰国际集团它本身并不解决问题。
在这种环境下,如何在Python中使用readline?
python ×5
alpine-linux ×1
c ×1
centos ×1
debugging ×1
docker ×1
gdb ×1
git ×1
git-merge ×1
github ×1
linux-kernel ×1
performance ×1
readline ×1
setuptools ×1
speech ×1
sqlalchemy ×1
ubuntu ×1