标签归档:Python

Gitsome-增强型Git/GitHub命令行界面(CLI)。GitHub和GitHub企业的官方集成:https://github.com/works-with/category/desktop-tools

一个Official Integration对于GitHub和GitHub Enterprise

为什么gitsome

Git命令行

虽然标准的Git命令行是管理基于Git的repo的一个很好的工具,但是它可以很难记住这个用法地址为:

  • 150多个瓷器和管道命令
  • 无数特定于命令的选项
  • 标签和分支等资源

Git命令行不与GitHub集成,强制您在命令行和浏览器之间切换

gitsome-具有自动完成功能的增压Git/GitHub CLI

gitsome旨在通过专注于以下方面来增强您的标准git/shell界面:

  • 提高易用性
  • 提高工作效率

深度GitHub集成

并不是所有的GitHub工作流都能在终端中很好地工作;gitsome试图将目标对准那些这样做的人

gitsome包括29个与一起使用的GitHub集成命令ALL外壳:

$ gh <command> [param] [options]

gh命令以及Git-Extrashub解锁更多GitHub集成的命令!

带有交互式帮助的Git和GitHub自动完成程序

您可以运行可选壳牌:

 $ gitsome

要启用自动完成交互式帮助对于以下内容:

通用自动补全程序

gitsome自动完成以下内容:

  • Shell命令
  • 文件和目录
  • 环境变量
  • 手册页
  • python

要启用其他自动完成,请查看Enabling Bash Completions部分

鱼式自动建议

gitsome支持鱼式自动建议。使用right arrow完成建议的关键

Python REPL

gitsome由以下人员提供动力xonsh,它支持Python REPL

在shell命令旁边运行Python命令:

附加内容xonsh功能可在xonsh tutorial

命令历史记录

gitsome跟踪您输入的命令并将其存储在~/.xonsh_history.json使用向上和向下箭头键循环查看命令历史记录

可自定义的突出显示

可以控制用于突出显示的ansi颜色,方法是更新~/.gitsomeconfig文件

颜色选项包括:

'black', 'red', 'green', 'yellow',
'blue', 'magenta', 'cyan', 'white'

对于无颜色,请将值设置为Nonewhite在某些终端上可能显示为浅灰色

可用的平台

gitsome适用于Mac、Linux、Unix、Windows,以及Docker

待办事项

并不是所有的GitHub工作流都能在终端中很好地工作;gitsome试图将目标对准那些这样做的人

  • 添加其他GitHub API集成

gitsome才刚刚开始。请随意……contribute!

索引

GitHub集成命令

安装和测试

杂项

GitHub集成命令语法

用法:

$ gh <command> [param] [options]

GitHub集成命令列表

  configure            Configure gitsome.
  create-comment       Create a comment on the given issue.
  create-issue         Create an issue.
  create-repo          Create a repo.
  emails               List all the user's registered emails.
  emojis               List all GitHub supported emojis.
  feed                 List all activity for the given user or repo.
  followers            List all followers and the total follower count.
  following            List all followed users and the total followed count.
  gitignore-template   Output the gitignore template for the given language.
  gitignore-templates  Output all supported gitignore templates.
  issue                Output detailed information about the given issue.
  issues               List all issues matching the filter.
  license              Output the license template for the given license.
  licenses             Output all supported license templates.
  me                   List information about the logged in user.
  notifications        List all notifications.
  octo                 Output an Easter egg or the given message from Octocat.
  pull-request         Output detailed information about the given pull request.
  pull-requests        List all pull requests.
  rate-limit           Output the rate limit.  Not available for Enterprise.
  repo                 Output detailed information about the given filter.
  repos                List all repos matching the given filter.
  search-issues        Search for all issues matching the given query.
  search-repos         Search for all repos matching the given query.
  starred              Output starred repos.
  trending             List trending repos for the given language.
  user                 List information about the given user.
  view                 View the given index in the terminal or a browser.

GitHub集成命令参考:COMMANDS.md

请参阅GitHub Integration Commands Reference in COMMANDS.md对于详细讨论所有GitHub集成命令、参数、选项和示例

请查看下一节,了解快速参考

GitHub集成命令快速参考

配置gitsome

要与GitHub正确集成,您必须首先配置gitsome

$ gh configure

对于GitHub Enterprise用户,使用-e/--enterprise标志:

$ gh configure -e

列表源

列出您的新闻源

$ gh feed

列出用户的活动摘要

查看您的活动订阅源或其他用户的活动订阅源,也可以选择使用寻呼机-p/--pager这个pager option可用于许多命令

$ gh feed donnemartin -p

列出回购的活动提要

$ gh feed donnemartin/gitsome -p

列出通知

$ gh notifications

列出拉式请求

查看您的回购的所有拉式请求:

$ gh pull-requests

过滤问题

查看您提到的所有未决问题:

$ gh issues --issue_state open --issue_filter mentioned

查看所有问题,只筛选分配给您的问题,而不考虑状态(打开、关闭):

$ gh issues --issue_state all --issue_filter assigned

有关过滤和州限定词的更多信息,请访问gh issues参考位置COMMANDS.md

过滤星级报告

$ gh starred "repo filter"

搜索问题和报告

搜索问题

+1最多的搜索问题:

$ gh search-issues "is:open is:issue sort:reactions-+1-desc" -p

评论最多的搜索问题:

$ gh search-issues "is:open is:issue sort:comments-desc" -p

使用“需要帮助”标签搜索问题:

$ gh search-issues "is:open is:issue label:\"help wanted\"" -p

已标记您的用户名的搜索问题@donnemartin

$ gh search-issues "is:issue donnemartin is:open" -p

搜索您所有未解决的私人问题:

$ gh search-issues "is:open is:issue is:private" -p

有关查询限定符的更多信息,请访问searching issues reference

搜索报告

搜索2015年或之后创建的所有Python repos,>=1000星:

$ gh search-repos "created:>=2015-01-01 stars:>=1000 language:python" --sort stars -p

有关查询限定符的更多信息,请访问searching repos reference

列出趋势报告和开发人员

查看趋势回购:

$ gh trending [language] [-w/--weekly] [-m/--monthly] [-d/--devs] [-b/--browser]

查看趋势DEV(目前仅浏览器支持DEV):

$ gh trending [language] --devs --browser

查看内容

这个view命令

查看前面列出的通知、拉取请求、问题、回复、用户等,HTML格式适合您的终端,也可以选择在您的浏览器中查看:

$ gh view [#] [-b/--browser]

这个issue命令

查看问题:

$ gh issue donnemartin/saws/1

这个pull-request命令

查看拉取请求:

$ gh pull-request donnemartin/awesome-aws/2

设置.gitignore

列出所有可用的.gitignore模板:

$ gh gitignore-templates

设置您的.gitignore

$ gh gitignore-template Python > .gitignore

设置LICENSE

列出所有可用的LICENSE模板:

$ gh licenses

设置您的或LICENSE

$ gh license MIT > LICENSE

召唤十月猫

在十月猫那天打电话说出给定的信息或复活节彩蛋:

$ gh octo [say]

查看配置文件

查看用户的配置文件

$ gh user octocat

查看您的个人资料

使用查看您的个人资料gh user [YOUR_USER_ID]命令或使用以下快捷方式:

$ gh me

创建评论、问题和报告

创建评论:

$ gh create-comment donnemartin/gitsome/1 -t "hello world"

创建问题:

$ gh create-issue donnemartin/gitsome -t "title" -b "body"

创建回购:

$ gh create-repo gitsome

选项:在寻呼机中查看

许多gh命令支持-p/--pager在寻呼机中显示结果的选项(如果可用)

用法:

$ gh <command> [param] [options] -p
$ gh <command> [param] [options] --pager

选项:在浏览器中查看

许多gh命令支持-b/--browser在默认浏览器(而不是终端)中显示结果的选项

用法:

$ gh <command> [param] [options] -b
$ gh <command> [param] [options] --browser

请参阅COMMANDS.md有关所有GitHub集成命令、参数、选项和示例的详细列表

记住这些命令有困难吗?看看手边的autocompleter with interactive help来指导您完成每个命令

注意,您可以将gitsome与其他实用程序(如Git-Extras

安装

PIP安装

gitsome托管在PyPI将安装以下命令gitsome

$ pip3 install gitsome

您还可以安装最新的gitsome来自GitHub源,可能包含尚未推送到PyPI的更改:

$ pip3 install git+https://github.com/donnemartin/gitsome.git

如果您没有安装在virtualenv,您可能需要运行sudo

$ sudo pip3 install gitsome

pip3

根据您的设置,您可能还希望运行pip3使用-H flag

$ sudo -H pip3 install gitsome

对于大多数Linux用户来说,pip3可以使用python3-pip套餐

例如,Ubuntu用户可以运行:

$ sudo apt-get install python3-pip

看这个ticket有关更多详细信息,请参阅

虚拟环境安装

您可以将Python包安装在virtualenv要避免依赖项或权限的潜在问题,请执行以下操作

如果您是Windows用户,或者如果您想了解更多有关virtualenv,看看这个guide

安装virtualenvvirtualenvwrapper

$ pip3 install virtualenv
$ pip3 install virtualenvwrapper
$ export WORKON_HOME=~/.virtualenvs
$ source /usr/local/bin/virtualenvwrapper.sh

创建gitsomevirtualenv并安装gitsome

$ mkvirtualenv gitsome
$ pip3 install gitsome

如果pip安装不起作用,您可能默认运行的是Python2。检查您正在运行的Python版本:

$ python --version

如果上面的调用结果是Python 2,请找到Python 3的路径:

$ which python3  # Python 3 path for mkvirtualenv's --python option

如果需要,安装Python 3。调用时设置Python版本mkvirtualenv

$ mkvirtualenv --python [Python 3 path from above] gitsome
$ pip3 install gitsome

如果要激活gitsomevirtualenv稍后再次运行:

$ workon gitsome

要停用gitsomevirtualenv,运行:

$ deactivate

作为Docker容器运行

您可以在Docker容器中运行gitome,以避免安装Python和pip3当地的。要安装Docker,请查看official Docker documentation

一旦安装了docker,您就可以运行gitome:

$ docker run -ti --rm mariolet/gitsome

您可以使用Docker卷让gitome访问您的工作目录、本地的.gitSomeconfig和.gitconfig:

$ docker run -ti --rm -v $(pwd):/src/              \
   -v ${HOME}/.gitsomeconfig:/root/.gitsomeconfig  \
   -v ${HOME}/.gitconfig:/root/.gitconfig          \
   mariolet/gitsome

如果您经常运行此命令,则可能需要定义别名:

$ alias gitsome="docker run -ti --rm -v $(pwd):/src/              \
                  -v ${HOME}/.gitsomeconfig:/root/.gitsomeconfig  \
                  -v ${HOME}/.gitconfig:/root/.gitconfig          \
                  mariolet/gitsome"

要从源构建Docker映像,请执行以下操作:

$ git clone https://github.com/donnemartin/gitsome.git
$ cd gitsome
$ docker build -t gitsome .

启动gitsome

安装后,运行可选的gitsome带有交互式帮助的自动完成程序:

$ gitsome

运行可选的gitsomeShell将为您提供自动完成、交互式帮助、鱼式建议、Python REPL等

正在运行gh命令

运行GitHub集成命令:

$ gh <command> [param] [options]

注意:运行gitsome不需要执行外壳程序gh命令。之后installinggitsome你可以跑gh来自任何shell的命令

运行gh configure命令

要与GitHub正确集成,gitsome必须正确配置:

$ gh configure

针对GitHub企业用户

使用-e/--enterprise标志:

$ gh configure -e

要查看更多详细信息,请访问gh configure部分

启用Bash完成

默认情况下,gitsome查看以下内容locations to enable bash completions

要添加其他bash完成,请更新~/.xonshrc包含bash完成位置的文件

如果~/.xonshrc不存在,请创建它:

$ touch ~/.xonshrc

例如,如果在/usr/local/etc/my_bash_completion.d/completion.bash,将以下行添加到~/.xonshrc

$BASH_COMPLETIONS.append('/usr/local/etc/my_bash_completion.d/completion.bash')

您将需要重新启动gitsome要使更改生效,请执行以下操作

正在启用gh在外部完成制表符gitsome

你可以跑gh外部的命令gitsome外壳完成器。要启用gh此工作流的制表符完成,请将gh_complete.sh本地文件

让bash知道可以完成gh当前会话中的命令:

$ source /path/to/gh_complete.sh

要为所有终端会话启用制表符完成,请将以下内容添加到您的bashrc文件:

source /path/to/gh_complete.sh

重新加载您的bashrc

$ source ~/.bashrc

提示:.是的缩写source,因此您可以改为运行以下命令:

$ . ~/.bashrc

对于Zsh用户

zsh包括与bash完成兼容的模块

下载gh_complete.sh文件,并将以下内容附加到您的.zshrc

autoload bashcompinit
bashcompinit
source /path/to/gh_complete.sh

重新加载您的zshrc

 $ source ~/.zshrc

可选:安装PILPillow

将化身显示为gh megh user命令需要安装可选的PILPillow依赖性

Windows*和Mac:

$ pip3 install Pillow

*请参阅Windows Support有关化身限制的部分

Ubuntu用户,看看这些instructions on askubuntu

支持的Python版本

  • Python 3.4
  • Python 3.5
  • Python 3.6
  • Python 3.7

gitsome由以下人员提供动力xonsh,它当前不支持Python2.x,如本文中所讨论的ticket

支持的平台

  • Mac OS X
    • 在OS X 10.10上测试
  • Linux、Unix
    • 在Ubuntu 14.04 LTS上测试
  • 窗口
    • 在Windows 10上测试

Windows支持

gitsome已在Windows 10上进行了测试,cmdcmder

虽然您可以使用标准的Windows命令提示符,但使用这两种命令提示符都可能会有更好的体验cmderconemu

纯文本化身

命令gh usergh me将永远拥有-t/--text_avatar标志已启用,因为img2txt不支持Windows上的ANSI头像

配置文件

在Windows上,.gitsomeconfig 文件可在以下位置找到%userprofile%例如:

C:\Users\dmartin\.gitsomeconfig

开发人员安装

如果您有兴趣为gitsome,请运行以下命令:

$ git clone https://github.com/donnemartin/gitsome.git
$ cd gitsome
$ pip3 install -e .
$ pip3 install -r requirements-dev.txt
$ gitsome
$ gh <command> [param] [options]

pip3

如果您在安装时收到一个错误,提示您需要Python 3.4+,这可能是因为您的pip命令是为旧版本的Python配置的。要解决此问题,建议安装pip3

$ sudo apt-get install python3-pip

看这个ticket有关更多详细信息,请参阅

持续集成

有关持续集成的详细信息,请访问Travis CI

单元测试和代码覆盖率

在活动的Python环境中运行单元测试:

$ python tests/run_tests.py

使用运行单元测试tox在多个Python环境中:

$ tox

文档

源代码文档将很快在Readthedocs.org请查看source docstrings

运行以下命令构建文档:

$ scripts/update_docs.sh

贡献

欢迎投稿!

回顾Contributing Guidelines有关如何执行以下操作的详细信息,请执行以下操作:

  • 提交问题
  • 提交拉式请求

学分

联系信息

请随时与我联系,讨论任何问题、问题或评论

我的联系信息可以在我的GitHub page

许可证

我在开放源码许可下向您提供此存储库中的代码和资源。因为这是我的个人存储库,您获得的我的代码和资源的许可证来自我,而不是我的雇主(Facebook)

Copyright 2016 Donne Martin

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

   http://www.apache.org/licenses/LICENSE-2.0

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.

Py-spy-Python程序的采样分析器

PY-SPY是一个用于Python程序的采样分析器。它允许您可视化Python程序正在花费时间的内容,而无需重新启动程序或以任何方式修改代码。PY-SPY的开销非常低:为了提高速度,它是用Rust编写的,并且不会在与分析过的Python程序相同的进程中运行。这意味着对生产Python代码使用py-spy是安全的

PY-SPY可以在Linux、OSX、Windows和FreeBSD上运行,并支持分析所有最新版本的CPython解释器(版本2.3-2.7和3.3-3.9)

安装

可以通过以下方式从PyPI安装预制的双轮:

pip install py-spy

您也可以从下载预生成的二进制文件。GitHub Releases
Page
这包括ARM和FreeBSD的二进制文件,它们不能使用pip安装。如果您是铁锈用户,py-spy还可以安装:cargo install py-spy在Arch Linux上,py-spy is in AUR并且可以与安装在一起yay -S py-spy

用法

PY-SPY从命令行工作,并获取要从中采样的程序的PID或要运行的python程序的命令行。Py-spy有三个子命令recordtopdump

录制

Py-spy支持使用record指挥部。例如,您可以生成一个flame graph通过执行以下操作,对您的python进程执行以下操作:

py-spy record -o profile.svg --pid 12345
# OR
py-spy record -o profile.svg -- python myprogram.py

这将生成一个交互式SVG文件,如下所示:

您可以更改文件格式以生成speedscope属性的配置文件或原始数据--format参数。看见py-spy record --help有关其他选项的信息,包括更改采样率、过滤以仅包括持有GIL的线程、分析本机C扩展、显示线程ID、分析子进程等

顶部

顶部显示哪些函数在您的python程序中占用的时间最长的实时视图,这与unix类似。top指挥部。使用以下选项运行py-spy:

py-spy top --pid 12345
# OR
py-spy top -- python myprogram.py

将显示Python程序的实时更新高级视图:

转储

Py-spy还可以显示每个python线程的当前调用堆栈,dump命令:

py-spy dump --pid 12345

这会将每个线程的调用堆栈以及其他一些基本进程信息转储到控制台:

这对于只需要一个调用堆栈来确定Python程序挂起的位置的情况很有用。此命令还能够打印出与每个堆栈帧相关联的局部变量,方法是将--locals旗帜

常见问题解答

为什么我们需要另一个Python分析器?

此项目旨在让您分析和调试任何正在运行的Python程序,即使该程序正在服务于生产流量

虽然还有许多其他的Python评测项目,但几乎所有项目都需要以某种方式修改评测的程序。通常,分析代码在目标python进程内运行,这会减慢并改变程序的操作方式。这意味着使用这些分析器调试生产服务中的问题通常不安全,因为它们通常会对性能产生明显影响

间谍是怎么工作的?

Py-spy的工作方式是直接读取python程序的内存,方法是使用process_vm_readvLinux上的系统调用,vm_read访问OSX或ReadProcessMemory在Windows上调用

计算Python程序的调用堆栈的方法是查看全局PyInterpreterState变量以获取解释器中运行的所有Python线程,然后迭代每个线程中的每个PyFrameObject以获得调用堆栈。由于Python ABI在不同版本之间会有所不同,因此我们使用Rust的bindgen要为我们关心的每个Python解释器类生成不同的RUST结构,并使用这些生成的结构来确定Python程序中的内存布局

由于以下原因,获取Python解释器的内存地址可能有点棘手Address Space Layout Randomization如果目标python解释器附带符号,那么通过取消引用interp_head_PyRuntime变量取决于Python版本。但是,许多Python版本都附带了剥离的二进制文件,或者在Windows上没有相应的PDB符号文件。在这些情况下,我们扫描BSS部分,查找看起来可能指向有效PyInterpreterState的地址,并检查该地址的布局是否符合我们的预期

py-spy配置文件可以本地扩展吗?

是!PY-SPY支持在x86_64Linux和Windows上分析用C/C++或Cython等语言编写的本机Python扩展。您可以通过传递以下命令来启用此模式--native在命令行上。为了获得最佳效果,您应该使用符号编译Python扩展。对于Cython程序,同样值得注意的是,py-spy需要生成的C或C++文件才能返回原始.pyx文件的行号。请阅读blog post了解更多信息

如何评价子流程?

通过传入--subprocesses标志添加到记录或顶视图,py-spy还将包括作为目标程序的子进程的任何python进程的输出。这对于分析使用多处理或独角兽工作线程池的应用程序非常有用。PY-SPY将监视正在创建的新进程,并自动附加到它们,并在输出中包含它们的样本。记录视图将包括调用堆栈中每个程序的PID和cmdline,子进程显示为其父进程的子进程

你什么时候需要以sudo的身份跑步?

PY-SPY通过从不同的Python进程读取内存来工作,出于安全原因,这可能是不允许的,具体取决于您的操作系统和系统设置。在许多情况下,以root用户(使用sudo或类似用户)身份运行可以绕过这些安全限制。OSX总是需要以root用户身份运行,但在Linux上,这取决于您如何启动py-spy和系统安全设置

在Linux上,默认配置是在附加到非子进程时需要root权限。对于py-spy,这意味着您可以通过让py-spy创建进程(py-spy record -- python myprogram.py),但是通过指定PID附加到现有进程通常需要root(sudo py-spy record --pid 123456)。您可以通过在Linux上设置ptrace_scope sysctl variable

如何检测线程是否空闲?

PY-SPY尝试仅包括来自活动运行代码的线程的堆栈跟踪,并排除休眠或空闲的线程。如果可能,py-spy尝试从OS获取此线程活动信息:通过读入/proc/PID/stat在Linux上,通过使用machthread_basic_info调用OSX,并通过查看当前系统调用是否known to be
idle
在Windows上

这种方法有一些限制,不过这可能会导致空闲线程仍然被标记为活动的。首先,我们必须在暂停程序之前获取此线程活动信息,因为从暂停的程序中获取此信息将导致它总是返回此信息为空闲。这意味着存在潜在的竞争条件,在这种情况下,我们获得线程活动,然后当我们获得堆栈跟踪时,线程处于不同的状态。对于Linux上的FreeBSD和i686/ARM处理器,查询操作系统的线程活动也尚未实现。在Windows上,IO上被阻塞的调用也不会被标记为空闲,例如在从标准输入读取输入时。最后,在某些Linux调用中,我们正在使用的ptrace Attach可能会导致空闲线程暂时唤醒,从而导致从procfs读取时出现误报。出于这些原因,我们还有一个启发式回退,它将Python中已知的某些已知调用标记为空闲

您可以通过设置--idle标志,该标志将包括py-spy认为空闲的帧。

GIL检测是如何工作的?

我们通过查看_PyThreadState_Current符号(适用于Python3.6和更早版本),并通过从_PyRuntimePython3.7及更高版本中的struct。这些符号可能不包括在您的python发行版中,这将导致解析哪个线程持有GIL失败。当前的GIL使用情况也显示在top查看为%Gil

通过--gil标志将仅包括对挂起的线程的跟踪。Global Interpreter Lock在某些情况下,这可能是更准确地了解您的python程序是如何花费时间的,尽管您应该意识到,这将错过在仍处于活动状态时发布GIL的扩展中的活动

为什么在OSX上分析/usr/bin/python会出现问题?

OSX有一项功能,称为System Integrity Protection这可以防止甚至root用户从/usr/bin中的任何二进制文件中读取内存。不幸的是,这包括OSX附带的python解释器

有几种不同的方法来处理此问题:

我怎么在码头里运行py-spy?

在停靠容器中运行py-spy通常也会出现权限被拒绝的错误,即使在以root身份运行时也是如此

此错误是由docker限制我们正在使用的process_vm_readv系统调用引起的。可以通过设置--cap-add SYS_PTRACE当启动船坞容器时

或者,您也可以编辑docker编写的YAML文件

your_service:
   cap_add:
     - SYS_PTRACE

请注意,您需要重新启动停靠容器才能使此设置生效

您还可以从主机操作系统使用py-spy来分析在停靠容器内运行的进程

我怎么才能在库伯内斯运营Py-Spy?

Py-Spy需求SYS_PTRACE才能读取进程内存。默认情况下,Kubernetes会删除该功能,从而导致错误

Permission Denied: Try running again with elevated permissions by going 'sudo env "PATH=$PATH" !!'

解决此问题的推荐方法是编辑规范并添加该功能。对于部署,这是通过将以下内容添加到Deployment.spec.template.spec.containers

securityContext:
  capabilities:
    add:
    - SYS_PTRACE

有关这一点的更多详细信息,请单击此处:https://kubernetes.io/docs/tasks/configure-pod-container/security-context/#set-capabilities-for-a-container请注意,这将删除现有Pod并重新创建这些Pod

如何在Alpine Linux上安装py-spy?

高山python选择退出manylinux轮子:pypa/pip#3969 (comment)您可以通过执行以下操作来覆盖此行为,以使用pip在Alpine上安装py-spy:

echo 'manylinux1_compatible = True' > /usr/local/lib/python3.7/site-packages/_manylinux.py

或者,您可以从以下位置下载MUSL二进制文件GitHub releases page

如何避免暂停Python程序?

通过设置--nonblocking选项,py-spy不会暂停您正在分析的目标python。虽然使用py-spy对进程进行采样的性能影响通常非常低,但设置此选项将完全避免中断正在运行的python程序。

设置此选项后,py-spy将在运行时从python进程读取解释器状态。由于我们用来读取内存的调用不是原子的,并且我们必须发出多个调用才能获得堆栈跟踪,这意味着在采样时偶尔会遇到错误。这可能表现为采样时错误率增加,或者部分堆栈帧包含在输出中

您如何通过PyPI分发Rust可执行二进制文件?

好的,实际上从来没有人问过我这个问题,但我想分享一下,因为这是一个非常可怕的黑客攻击,可能对其他人有用

我真的很想通过PyPI分发这个包,因为使用pip安装会使大多数Python程序员更容易在他们的系统上安装。不幸的是,installing executables as python
scripts isn’t something that setuptools supports

为了解决这个问题,我使用setuptools_rust包来构建py-spy二进制文件,然后覆盖distutils install command将构建的二进制文件复制到python脚本文件夹中。通过为支持的平台预置轮子来实现这一点,意味着我们可以使用pip安装py-spy,而不需要在要安装它的机器上安装Rust编译器。

py-spy是否支持32位Windows?与PyPy集成?使用USc2版本的Python2吗?

尚未=)

如果您希望在py-spy中看到一些功能,请竖起大拇指appropriate
issue
或者创建一个新的文档来描述缺少的功能

学分

Py-Spy在很大程度上受到了Julia Evans在……方面的出色工作rbspy特别是,生成火焰图和速度范围文件的代码直接取自rbspy,该项目使用read-process-memoryproc-maps从rbspy剥离出来的板条箱

许可证

Py-spy是在麻省理工学院的许可下释放的,请参阅LICENSE用于全文的文件

Mopidy-是用Python编写的可扩展音乐服务器

莫比迪

Mopidy是用Python编写的可扩展音乐服务器

Mopidy播放来自本地磁盘、Spotify、SoundCloud、Google Play Music等的音乐。您可以使用各种MPD和Web客户端从任何手机、平板电脑或计算机编辑播放列表

从云端流式播放音乐

Vanilla Mopidy只播放文件和广播流中的音乐。通过extensions,Mopidy可以播放来自Spotify、SoundCloud和Google Play Music等云服务的音乐。有了Mopidy的扩展支持,可以很容易地添加新音乐源的后端

莫皮迪只是个服务器

Mopidy是一款Python应用程序,在具有网络连接和音频输出的Linux计算机或Mac电脑上的终端或后台运行。开箱即用,Mopidy是一个HTTP服务器。如果您安装Mopidy-MPD扩展,它也变成了MPD服务器。许多用于控制Mopidy的附加前端作为扩展模块可用

挑选你最喜欢的客户

你和你周围的人都可以将他们最喜欢的MPD或网络客户端连接到Mopidy服务器上,一起搜索音乐和管理播放列表。使用适用于所有流行操作系统的浏览器或MPD客户端,您可以从任何手机、平板电脑或计算机控制音乐

覆盆子猪的多倍性研究

这个Raspberry Pi是运行Mopidy的流行设备,可以使用Raspbian、Ubuntu或Arch Linux。皮莫罗尼建议将莫比迪与他们的Pirate Audio树莓PI的音响设备。莫皮迪也是挡路的重要建筑Pi Musicbox覆盆子猪的集成音频点唱机系统

莫比迪是可黑客攻击的

Mopidy的扩展支持以及Python、JSON-RPC和JavaScript API使Mopidy成为您的项目的完美基础。在一次黑客攻击中,一个覆盆子圆周率被嵌入到一个旧的卡带播放机中。按钮和音量控制与Raspberry PI上的GPIO连接,并用于通过自定义的Mopidy扩展来控制播放。盒式磁带有用于从Spotify选择播放列表的NFC标签

快速入门

要开始使用Mopidy,请先阅读installation docs

项目资源








Impacket-Impacket是用于使用网络协议的Python类的集合

什么是Imacket?

Impacket是用于使用网络协议的Python类的集合。Impacket专注于提供对数据包的低级编程访问,并为某些协议(例如SMB1-3和MSRPC)提供协议实现本身。可以从头开始构造数据包,也可以从原始数据解析数据包,面向对象的API使得使用深层协议层次结构变得简单。该库提供了一组工具,作为在该库的上下文中可以执行哪些操作的示例

有关某些工具的说明,请访问:https://www.secureauth.com/labs/open-source-tools/impacket

有哪些协议?

  • 以太网、Linux“熟透”捕获
  • IP、TCP、UDP、ICMP、IGMP、ARP
  • IPv4和IPv6支持
  • NMB和SMB1、SMB2和SMB3(高级实施)
  • MSRPC版本5,支持不同的传输方式:TCP、SMB/TCP、SMB/NetBIOS和HTTP
  • 纯文本、NTLM和Kerberos身份验证,使用密码/散列/票证/密钥
  • 部分/完全实施以下MSRPC接口:EPM、DTYPES、LSAD、LSAT、NRPC、RRP、SAMR、SRVS、WKST、SCMR、BKRP、DHCPM、EVEN6、MGMT、SASEC、TCH、DCOM、WMI、OXABREF、NSPI、OXNSPI
  • 部分TDS(MSSQL)和LDAP协议实现

受到冲击

设置

快速入门

抓取最新的稳定版本,将其解包并运行python3 -m pip install .(python2 -m pip install .对于Python2.x)。这不容易吗?

正在安装

要安装源文件,请从Imacket分发包的解压缩目录执行以下命令:python3 -m pip install .(python2 -m pip install . 对于Python 2.x)。这会将类安装到默认的Python模块路径中;请注意,您可能需要特殊权限才能在此写入

测试

如果您想运行库测试用例,您主要需要做三件事:

  1. 安装和配置Windows 2012 R2域控制器
    • 确保RemoteRegistry服务已启用并正在运行
  2. 配置dcetest.cfg包含必要信息的文件
  3. 安装TOX(python3 -m pip install tox)

一旦做完了,你就可以跑了tox等待结果。如果一切顺利,所有测试用例都应该通过。您还将拥有位于以下位置的Coverage HTML报告impacket/tests/htlmcov/index.html

Docker支持

打造Impacket的形象:

  docker build -t "impacket:latest" .

使用Impacket的图像:

  docker run -it --rm "impacket:latest"

许可

此软件在Apache软件许可证稍作修改的版本下提供。请参阅随附的LICENSE有关详细信息,请参阅文件

Michael Teo基于Pysmb的SMBv1和NetBIOS支持

免责声明

这个开源计划的精神是帮助安全研究人员和社区加快与实施网络协议和堆栈相关的研究和教育活动

此存储库中的信息用于研究和教育目的,不能用于生产环境和/或作为商业产品的一部分

如果您希望将此代码或部分代码用于自己的用途,我们建议您应用适当的安全开发生命周期和安全编码实践,并根据您的需要生成和跟踪各自的危害指标

联系我们

无论您是想报告bug、发送补丁,还是就此包给出一些建议,请给我们几行信息,地址为oss@secureauth.com

有关安全相关问题,请查看我们的security policy

经典编程书籍大全,涵盖:计算机系统与网络、系统架构、算法与数据结构、前端开发、后端开发、移动开发、数据库、测试、项目与团队、程序员职业修炼、求职面试等

太棒了-cs-书籍:超过200本经典的计算机书籍分享

经典的编程书单大全简介:

这里汇集如下主题的经典书籍:编程语言(JAVA、C++、C、python等等)、操作系统、计算机网络、系统架构、设计模式、程序员数学、测试、中间件、前端开发、后台开发、网络编程、linux使用及内核、求职面试、算法与数据结构安卓、IOS、数据库、redis等主流的编程学习书籍.

本仓库持续更新中,后续会陆续分享更多经典电子书,墙裂建议大家STAR下本仓库,下次找书直接Ctrl+F

如果国内访问Github网速较慢,可以访问码云:https://gitee.com/Marvinle/awesome-cs-books

大神刷题笔记

重要说明如果目录无法跳转的话,直接拉下去就可以了,这些书籍都是在同一个页面的,我只是方便大家找到对应的,弄了一个页内目录,不过有部分读者反馈他跳转不了(手机是绝对跳转不了的了)。


CS四大基础课

操作系统

编译原理

//TDOO

计算机网络

计算机组成原理

//TODO

计算机系统

算法和数据结构

网络编程

架构和设计模式

数据库和存储

C++

C++面试题集锦.PDF百度网盘链接密码:Lrv9

Java语言

Java语言

C语言

大数据

//TODO

机器学习和人工智能

//TODO

未分类

//TODO

全部汇总

目前我把电子书暂时放在公众号[编程指北]了,扫码关注下面公众号,回复“pdf”就有我收集的上百本经典计算机书籍,包含各个方向:

微信扫描上方二维码回复“pdf”

免责声明

书籍全部来源于网络其他人的整理,这里只是收集整理了他们的链接,如有侵权,马上联系我,我立马删除对应链接.我的邮箱:2039652520@qq.com

Youtube-dl-gui-用wxPython编写的流行的youtube-dl的跨平台前端GUI

一款流行的跨平台前端GUIyoutube-dl用wxPython编写的媒体下载器。Supported sites

屏幕截图

要求

下载次数

安装

从源安装

  1. 下载并解压缩源代码
  2. 将目录更改为youtube-dl-gui-0.4
  3. python setup.py install

安装PyPi

  1. pip install youtube-dlg

安装Windows Installer

  1. 下载并解压缩Windows Installer
  2. 运行setup.exe文件

贡献

作者

看见AUTHORS文件

许可证

这个Public Domain License

常见问题解答

看见FAQs文件

谢谢

感谢为这个项目做出贡献的每一个人,感谢@philipzae用于设计新的UI布局

Httpx-Python的下一代HTTP客户端。🦋

HTTPX是Python3的一个功能齐全的HTTP客户端,它提供同步和异步API,并同时支持HTTP/1.1和HTTP/2

注意事项HTTPX应该在测试版中考虑。我们相信我们现在已经使公共API达到了一个稳定点,但是强烈建议将您的依赖项绑定到0.18.*发布,这样您就可以正确地查看API changes between package updates1.0版本预计将在2021年的某个时候发布


我们开始吧

>>> import httpx
>>> r = httpx.get('https://www.example.org/')
>>> r
<Response [200 OK]>
>>> r.status_code
200
>>> r.headers['content-type']
'text/html; charset=UTF-8'
>>> r.text
'<!doctype html>\n<html>\n<head>\n<title>Example Domain</title>...'

或者,使用异步API

使用IPython或Python 3.8+和python -m asyncio以交互方式尝试此代码

>>> import httpx
>>> async with httpx.AsyncClient() as client:
...     r = await client.get('https://www.example.org/')
...
>>> r
<Response [200 OK]>

功能

HTTPX构建在requests,并为您提供:

加上的所有标准功能requests

  • 国际域名和URL
  • 保活和连接池
  • 具有Cookie持久性的会话
  • 浏览器样式的SSL验证
  • 基本/摘要身份验证
  • 精美的密钥/价值Cookie
  • 自动解压
  • 自动内容解码
  • Unicode响应正文
  • 多部分文件上载
  • HTTP(S)代理支持
  • 连接超时
  • 流式下载
  • netrc支持
  • 分块请求

安装

使用pip安装:

$ pip install httpx

或者,要包括可选的HTTP/2支持,请使用:

$ pip install httpx[http2]

HTTPX需要Python 3.6+

文档

有关项目文档,请访问https://www.python-httpx.org/

要浏览所有基础知识,请访问QuickStart

有关更高级的主题,请参阅Advanced Usage部分中,async support节,或HTTP/2部分

这个Developer Interface提供全面的API参考

要了解有关与HTTPX集成的工具的信息,请参阅Third Party Packages

贡献力量

如果您想使用HTTPX做出贡献,请查看Contributing Guide学习如何开始

依赖项

HTTPX项目依赖于这些优秀的库:

  • httpcore-的底层传输实现httpx
    • h11-HTTP/1.1支持
    • h2-HTTP/2支持。(可选)
  • certifi-SSL证书
  • rfc3986-URL解析和规范化
    • idna-支持国际化域名
  • sniffio-异步库自动检测
  • async_generator-后端支持contextlib.asynccontextmanager(仅Python 3.6需要)
  • brotlicffi-解码“brotli”压缩响应。(可选)

巨额信贷应归因于requests对于此工作中的大部分工作所遵循的API布局,以及urllib3有关较低级别的网络细节的大量设计灵感,请参阅

-⭐️-

HTTPX是BSD licensed密码。在英国布赖顿设计和建造

Pip-Python软件包安装程序

PIP-Python软件包安装程序

PIP是package installer为了Python。您可以使用pip从Python Package Index和其他索引

请查看我们的文档,了解如何安装和使用pip:

我们定期发布更新,每3个月更新一次。有关更多详细信息,请参阅我们的文档:

在PIP20.3中,我们已经made a big improvement to the heart of piplearn more我们需要你的意见,所以sign up for our user experience research studies来帮助我们做好这件事

注意事项:pip 21.0,在2021年1月,删除了对每个pip的Python 2支持Python 2 support policy请迁移到Python 3

如果您发现错误、需要帮助或想与开发人员交谈,请使用我们的邮件列表或聊天室:

如果您想参与到GitHub获取源代码,请查看我们的开发文档,并随时跳转到开发人员邮件列表和聊天室:

行为规范

在pip项目的代码库、问题跟踪器、聊天室和邮件列表中交互的每个人都应该遵循PSF Code of Conduct

Bottle-py是一个用于python web应用程序的快速而简单的微框架。

瓶子:Python Web框架

瓶子是一种快速、简单、轻便的WSGI微型Web-用于Python它作为单个文件模块分发,除了Python Standard Library

主页和文档:http://bottlepy.org

示例:瓶子里的“Hello World”

from bottle import route, run, template

@route('/hello/<name>')
def index(name):
    return template('<b>Hello {{name}}</b>!', name=name)

run(host='localhost', port=8080)

运行此脚本或将其粘贴到Python控制台,然后将浏览器指向http://localhost:8080/hello/world就这样

下载并安装

使用安装最新的稳定版本pip install bottle或下载bottle.py(不稳定)到您的项目目录中。除了Python标准库之外,没有其他硬依赖项。瓶子与Python 2.7和3.6+

许可证

代码和文档根据MIT许可提供(请参见LICENSE)

然而,瓶子的标志是都在那张执照的覆盖范围内。允许将徽标用作瓶子主页的链接,或与未经修改的图书馆直接关联。在所有其他情况下,请先询问一下。

Computervision-recipes-计算机视觉的最佳实践、代码示例和文档

计算机视觉

近年来,我们看到了计算机视觉的非同寻常的增长,应用于人脸识别、图像理解、搜索、无人机、地图绘制、半自动和自动驾驶车辆。其中许多应用的关键部分是视觉识别任务,例如图像分类、目标检测和图像相似度

此存储库提供构建计算机视觉系统的示例和最佳实践指南。该存储库的目标是构建一套全面的工具和示例,以利用计算机视觉算法、神经体系结构和实现此类系统的最新进展。我们不是从头开始创建实现,而是利用现有的最先进的库,围绕加载图像数据、优化和评估模型以及向上扩展到云来构建额外的实用程序。此外,在此领域工作多年后,我们的目标是回答常见问题,指出经常观察到的陷阱,并展示如何使用云进行培训和部署

我们希望这些示例和实用程序可以通过按数量级简化从定义业务问题到开发解决方案的过程来显著缩短“上市时间”。此外,示例笔记本将作为指南,并以多种语言展示工具的最佳实践和用法

这些示例提供为Jupyter notebooks也很常见utility functions所有示例都使用PyTorch作为底层深度学习库

目标受众

我们这个存储库的目标受众包括具有不同计算机视觉知识水平的数据科学家和机器学习工程师,因为我们的内容是纯来源的,目标是自定义的机器学习建模。所提供的实用程序和示例旨在作为解决实际视觉问题的加速器

快速入门

要开始,请导航到Setup Guide,其中列出了有关如何设置计算环境和运行此Repo中的笔记本所需的依赖项的说明。设置环境后,请导航到Scenarios文件夹,开始浏览笔记本。我们建议从图像分类笔记本,因为这引入了其他场景也使用的概念(例如关于ImageNet的预培训)

或者,我们支持活页夹只需点击此链接,即可在网络浏览器中轻松试用我们的笔记本电脑。然而,Binder是免费的,因此只提供有限的CPU计算能力,并且没有GPU支持。预计笔记本的运行速度会非常慢(通过将图像分辨率降低到例如60像素,这在一定程度上有所改善,但代价是精确度较低)

场景

以下是此存储库中涵盖的常用计算机视觉场景的摘要。对于每个主要场景(“基础”),我们都会提供工具来有效地构建您自己的模型。这包括在您自己的数据上微调您自己的模型等简单任务,以及硬性否定挖掘甚至模型部署等更复杂的任务

场景 支持 描述
Classification 基地 图像分类是一种有监督的机器学习技术,用于学习和预测给定图像的类别
Similarity 基地 图像相似度是一种计算给定一对图像的相似度分数的方法。在给定图像的情况下,它允许您识别给定数据集中最相似的图像
Detection 基地 对象检测是一种允许您检测图像中对象的边界框的技术
Keypoints 基地 关键点检测可用于检测对象上的特定点。提供了一种预先训练的模型来检测人体关节,以进行人体姿态估计。
Segmentation 基地 图像分割为图像中的每个像素分配类别
Action recognition 基地 动作识别,用于在视频/网络摄像机镜头中识别执行的动作(例如,“运行”、“打开瓶子”)以及各自的开始/结束时间。我们还实现了可以在(Contrib)[contrib]下找到的动作识别的i3D实现
Tracking 基地 跟踪允许随时间检测和跟踪视频序列中的多个对象
Crowd counting Contrrib 统计低人群密度(如10人以下)和高人群密度(如数千人)场景下的人数

我们将支持的CV方案分为两个位置:(I)基地:“utils_cv”和“Scenario”文件夹中的代码和笔记本遵循严格的编码准则,经过良好的测试和维护;(Ii)Contrrib:“contrib”文件夹中的代码和其他资源,主要介绍使用尖端技术的不太常见的CV场景。“contrib”中的代码没有定期测试或维护

计算机视觉在蔚蓝上的应用

请注意,对于某些计算机视觉问题,您可能不需要构建自己的模型。取而代之的是,Azure上存在预先构建的或可轻松定制的解决方案,不需要任何自定义编码或机器学习专业知识。我们强烈建议您评估这些方法是否足以解决您的问题。如果这些解决方案不适用,或者这些解决方案的准确性不够,则可能需要求助于更复杂、更耗时的自定义方法

以下Microsoft服务提供了解决常见计算机视觉任务的简单解决方案:

  • Vision Services是一组经过预先训练的睡觉API,可以调用它们来进行图像标记、人脸识别、光学字符识别、视频分析等。这些API开箱即用,只需要极少的机器学习专业知识,但定制功能有限。查看各种可用的演示以体验该功能(例如Computer Vision)。该服务可通过API调用或通过SDK(以.NET、Python、Java、Node和Go语言提供)使用
  • Custom Vision是一项SaaS服务,用于在给定用户提供的培训集的情况下将模型训练和部署为睡觉应用编程接口。所有步骤,包括图像上传、注释和模型部署,都可以使用直观的UI或通过SDK(.Net、Python、Java、Node和Go语言)执行。训练图像分类或目标检测模型可以用最少的机器学习专业知识来实现。与使用预先培训的认知服务API相比,Custom Vision提供了更大的灵活性,但需要用户自带数据并对其进行注释

如果您需要培训您自己的模型,以下服务和链接提供了可能有用的附加信息

  • Azure Machine Learning service (AzureML)是一项帮助用户加速训练和部署机器学习模型的服务。虽然AzureML Python SDK不特定于计算机视觉工作负载,但它可以用于可伸缩且可靠的培训,并将机器学习解决方案部署到云中。我们在此存储库中的几个笔记本中利用Azure机器学习(例如deployment to Azure Kubernetes Service)
  • Azure AI Reference architectures提供一组示例(由代码支持),说明如何构建利用多个云组件的常见面向AI的工作负载。虽然不是特定于计算机视觉的,但这些参考体系结构涵盖了几个机器学习工作负载,例如模型部署或批处理评分

生成状态

AzureML测试

构建类型 分支机构 状态 分支机构 状态
Linux GPU 师傅 试运行
Linux CPU 师傅 试运行
笔记本电脑单元GPU 师傅 试运行

贡献

这个项目欢迎大家提供意见和建议。请参阅我们的contribution guidelines