我有一个设置,其中控制器(或实验文件,即Python文件)重复调用两个不同的Python脚本。让我们调用控制器C
,两个脚本A
和B
。
A
提供逻辑,B
是模拟器。
每次控制器调用A
时,我都需要创建一个gameObject
。
以前的A
代码:
# global object
gameObject = Game() # dummy initialization to make the object "known"
class A(object):
def __init__(self, **parameters):
# rest of the code
def method_start(self): # invoked at the start of each "run"
global gameObject
gameObject = Game() # reinitialize the object for the current run
# some code
# other methods related to the logic
def method_end(self):
global gameObject
del gameObject # destroy the object at the end of this run
目标:我现在想让gameObject
成为class A
的一部分。
所以我做了以下更改。
A
的当前代码:
class A(object):
def __init__(self, **parameters):
self.gameObject = Game() # no more global object
# rest of the code
def method_start(self): # invoked at the start of each "run"
self. gameObject = Game() # reinitialize the object for the current run
# some code
# other methods related to the logic
def method_end(self):
del self.gameObject # destroy the object at the end of this run
在上述更改后,在第一次"运行"结束时,gameObject
被删除,我最终在method_start()
中出现以下错误:
AttributeError: 'A' object has no attribute 'gameObject'
我现在的解决方法是在self.gameObject = None
中制作method_end()
。但是,由于这种变化,每次运行后内存消耗似乎都在稳步增加。
如何在没有内存泄漏的情况下实现我的目标?
===编辑1: 添加了示例代码
===编辑2: 删除了示例代码
我在这里给出的设置中意识到,问题并没有浮出水面!
A
,B
和C
之间运行的协议服务器,通过该服务器进行通信。A
和B
都是独立的流程,C
控制着它们之间的沟通!gameObject
的引用导致内存泄漏(如评论中所示)