跟踪子进程。

process-tracker的Python项目详细描述


过程跟踪器

进程跟踪器允许跟踪子进程的创建。

用法:

importprocess_tracker;process_tracker.install()importospid1=os.fork()pid2=os.fork()pid3=os.fork()ifpid1andpid2andpid3:print(process_tracker.children())

为每个进程打印带有(pid, create_time)的元组列表。

create_time可用于确认当前进程(如果有) 给定的PID与原始PID相同。例如:

importprocess_trackerimportpsutildefget_create_time(ctime):boot_time=psutil.boot_time()clock_ticks=os.sysconf("SC_CLK_TCK")returnboot_time+(ctime/clock_ticks)processes=[]forpid,create_timeinprocess_tracker.children():try:p=psutil.Process(pid=pid)exceptpsutil.NoSuchProcess:continueifp.create_time()==get_create_time(create_time):processes.append(p)# processes now has the list of active child processes# psutil itself does a check before sensitive operations that the# active process create time is the same as when the Process object# was initialized.forpinprocesses:p.terminate()

限制

  1. 仅跟踪从动态链接的可执行文件生成的子级。
  2. 依赖于LD_PRELOAD,因此对setuid/setgid可执行文件不起作用。

发展

基本

  1. python -m venv .venv
  2. .venv/bin/python -m pip install tox
  3. 进行更改
  4. .venv/bin/python -m tox

调试C生成

避免生成sdist的开销

  1. 如上所述
  2. make c-build

子进程的调试问题

子进程的gdb调试。

  1. 如上所述
  2. make debug

在不重建的情况下调试测试

  1. 如上所述
  2. .venv/bin/python -m pip install . .[dev]

然后

  • pip install . && pytest需要重建时
  • pytest仅当测试更改时

释放

docker run \
    -e REAL_UID=$(id -u) \
    -e REAL_GID=$(id -g) \
    -v "$PWD/scripts/build.sh:/build.sh" \
    -v "$PWD:/src" \
    dockcross/manylinux1-x64 \
    sh -c 'cd /src && env "PATH=/opt/python/cp37-cp37m/bin:$PATH" /build.sh'

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
Java岩石、布、剪刀程序,带文件输入   java迭代Hashmap中的值列表   数组不能正确循环   JavaHibernate:对于一个遥远的惰性依赖,有一个渴望的获取者吗?   交通阻塞下的java车辆路径选择   如何在java中创建布尔方法来检查添加到具有特定索引的arraylist的对象   java Tomcat配置文件/上下文xml似乎已经崩溃了。请确保它是可分析和有效的。有关详细信息,请参阅服务器日志   为什么坐标有时相等,有时不相等?   java libgdx CameraInputController过于敏感,平移开始得太早   将C++排序函数移植到java   java应该是十进制的   swing Java JFrame中的所有内容都不可见   java使用数组中除一个元素以外的所有元素   从子类运行构造函数的Java