Python 从特定内存地址/对象引用读取数据

Python 从特定内存地址/对象引用读取数据,python,memory,reference,Python,Memory,Reference,如何读取(并放入新变量)存储在特定内存地址的数据 例如,我知道: <nfqueue.queue; proxy of <Swig Object of type 'queue *' at 0xabd2b00> > 在某一点上,新的线程被调用 File2.py: kolejka = nfqueue.queue() 这里创建、绑定和打开队列。然后执行无止境的监听循环。结束它的唯一方法是解除绑定并关闭kolejka,但我希望file1.py能够这样做,因为它是一个“主”程序

如何读取(并放入新变量)存储在特定内存地址的数据

例如,我知道:

  <nfqueue.queue; proxy of <Swig Object of type 'queue *' at 0xabd2b00> >
在某一点上,新的线程被调用

File2.py:

kolejka = nfqueue.queue()
这里创建、绑定和打开队列。然后执行无止境的监听循环。结束它的唯一方法是解除绑定并关闭kolejka,但我希望file1.py能够这样做,因为它是一个“主”程序。新线程完成后,如何从文件中检索初始化的kolejka以正确关闭队列

当我尝试时:

from file2 import kolejka

脚本从一开始就执行创建队列的所有过程(它还没有作为函数编写)。

您不能-无法从特定地址读取数据。如果您没有(或无法检索)对您感兴趣的对象的引用,那么您就倒霉了

此外,即使您可以从给定的地址读取数据,这也不会有帮助,因为除非您有对原始对象的引用,否则您将无法知道从哪个地址读取数据。然后你就不需要从内存中读取原始数据了


更新-如何干净地终止子进程 在Python中,有几种方法可以在进程之间共享内存(例如模块)。然而,对于你的问题来说,这似乎有点过分了。由于您是从
new_-thread
中启动
file2
进程,因此最简单的解决方案可能是使用模块让
new_-thread
在主程序退出时告诉
file2
进程退出

这允许
file2.py
在关闭前执行任何需要的清理,而且这也是一个干净的解决方案,因为
file1.py
不需要知道如何关闭
file2.py
的详细信息,使您的代码更模块化,更易于维护

file1.py file2.py
那么,从另一个(正在运行的)python脚本获取变量引用的最佳方法是什么?“从script2导入变量”是否起作用?如果所需变量位于函数SomeFunc()中该怎么办?如果没有关于问题的更多信息,很难给出一个好的答案。你能用一些代码示例来说明你的问题吗?用一个简短的例子来说明变量是在哪里定义的,以及在哪里需要使用它,这将非常好。我希望我的描述将有助于想象我正在努力解决的问题。谢谢,现在你想要实现的目标更加清晰了。我已经更新了我的答案,建议如何干净地终止这两个进程-希望这有帮助!工作完美。感谢您再次提醒我信号确实存在:)
from file2 import kolejka
def run(self):
    ...
    child_process = subprocess.Popen(args, ...)
    ...
    # time to quit - tell file2 to terminate
    child_process.terminate()
import signal
import sys
...
kolejka = nfqueue.queue()
...
def sigterm_handler(signum, frame):
    # close kolejka and do any other cleanup needed, then do:
    sys.exit()

# Make sure sigterm_handler() is run when file1.py tells us
# to quit using child_process.terminate()
signal.signal(signal.SIGTERM, sigterm_handler)