从特定的存储器地址/对obj的引用读取数据

2024-05-16 06:48:00 发布

您现在位置:Python中文网/ 问答频道 /正文

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

例如,我知道:

  <nfqueue.queue; proxy of <Swig Object of type 'queue *' at 0xabd2b00> >

我希望将数据存储在0xabd2b00的新变量中,这样我就可以工作并使用对象的所有功能。假设我不能访问创建这个对象的原始变量。在

更新: 上面的问题已经回答了,所以我更新了我的问题。 假设我有两个python文件:file1.py和file2.py

文件1.py:

^{pr2}$

在某个时刻线程被称为新的线程。在

文件2.py:

kolejka = nfqueue.queue()

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

当我尝试:

from file2 import kolejka

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


Tags: 文件of数据对象py队列queue线程
1条回答
网友
1楼 · 发布于 2024-05-16 06:48:00

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

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


更新-如何干净地终止子进程

在Python中,有一些方法可以在进程之间共享内存(例如multiprocessing模块)。不过,这对你的问题来说似乎有点过分了。由于您是从new_thread内启动file2进程,最简单的解决方案可能是使用signal模块让new_thread告诉{}进程在主程序退出时退出。在

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

文件1.py

def run(self):
    ...
    child_process = subprocess.Popen(args, ...)
    ...
    # time to quit - tell file2 to terminate
    child_process.terminate()

文件2.py

^{pr2}$

相关问题 更多 >