gpt4 book ai didi

java - 从正在运行的程序中获取变量

转载 作者:塔克拉玛干 更新时间:2023-11-03 01:27:13 29 4
gpt4 key购买 nike

我有一个运行数天的脚本,其中有一个计数器。计数器定期写入文件,是否可以从另一个 python 脚本、linux 命令甚至 java 中找出计数器设置的值?

简单的 python 计数器示例:

import time
import random

a = 0
while True:
a +=1
time.sleep(random.random())

我对给定时间 a 的值感兴趣。

最佳答案

是的,您可以使用任何 IPC method例如,您可以 send the counter over a socket :

self.request.sendall(json.dumps(dict(counter=a)).encode('ascii'))

如果你想从一个你不能修改的已经运行的进程中获取值,那么你可以尝试 attach a debugger :

$ sudo gdb python <pid of running process>

要启用特定于 python 的帮助程序命令,请添加到您的 ~/.gdbinit:

add-auto-load-safe-path /path/to/python-gdb.py

示例 gdb session 可能如下所示:

>>> thread apply all py-list

Thread 1 (Thread 0x7f68ff397700 (LWP 9807)):
2 import random
3
4 a = 0
5 while True:
6 a +=1
>7 time.sleep(random.random())
>>> py-print a
global 'a' = 83

从另一个 Python 脚本,您可以以批处理模式运行 gdb:

#!/usr/bin/env python
import shlex
import subprocess

cmd = shlex.split("sudo gdb --batch -ex 'py-print a' python") + [str(pid)]
output = subprocess.check_output(cmd, stderr=subprocess.DEVNULL,
cwd=path_to_python_gdb)
a = int(output.rsplit(b'\n', 2)[-2].rpartition(b' ')[2])

关于java - 从正在运行的程序中获取变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32941251/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com