python api引发错误Fatal Python error: deallocating None

python3.9 Ubuntu 23.10 x64 dolphindb 2.0.11.0

代码在多个循环后崩溃 引发错误Fatal Python error: deallocating None

bug复现代码如下:

    def calculate_factors(self, reset=False, persist=False):

    """
处理factors
"""
if persist and reset:
self.client_mgr.reset_factors_persist_table(self.db_name, self.strategy_code, self.strategy_params, self.strategy_params_type)
self.client_mgr.create_factors_persist_table(self.db_name, self.strategy_code, self.strategy_params, self.strategy_params_type)
i=0
while self.running_trade :
try:
valid_data_count = int(self.s.run(f"int(rows({self.bar_table_name}))"))
if valid_data_count<= 20:
time.sleep(1)
continue
else:
if persist:
print(f'{i=} {sys.getrefcount(None)=}')
i += 1
signal_list = self.s.run(f"""
use inidi
use strategy

t = select * from {self.bar_table_name} context by symbol limit -20000
bar_factors = {self.strategy_code}_factors(t)
signal = {self.strategy_code}(bar_factors)
t2 = table(last(select event_time,symbol,price,quantity from {self.tick_stream_tb_name}),
last(select signal from signal),
last(select {self.strategy_factors} from bar_factors)
)
{self.strategy_code} = loadTable("dfs://{self.db_name}", `{self.strategy_code})
{self.strategy_code}.append!(t2)
last(signal)
""")
else:
signal_list = self.s.run(f"""
use inidi
use strategy
t = select * from {self.bar_table_name}
bar_factors = {self.strategy_code}_factors(t)
last({self.strategy_code}(bar_factors))
)
""")
#更新信号值
self.signal = signal_list.signal[0]
#信号触发
if self.signal != 0:
with self.signal_condition: # 获取条件变量的锁
#通知trade执行order
self.signal_condition.notify_all()
print("Signal passed to trade module!")
time.sleep(1)
except Exception as e:
print(e)
continue

打印结果为:

sys.getrefcount(None)=34742

sys.getrefcount(None)=34742

sys.getrefcount(None)=34742

sys.getrefcount(None)=34741

sys.getrefcount(None)=34740

sys.getrefcount(None)=34737

sys.getrefcount(None)=34737

sys.getrefcount(None)=34737

sys.getrefcount(None)=34736

sys.getrefcount(None)=34736

sys.getrefcount(None)=34736

数值逐渐减少到0引发错误

请先 登录 后评论

1 个回答

wfHuang

能提供一下最小复现代码么,代码在我的本地跑不起来

请先 登录 后评论
  • 1 关注
  • 0 收藏,140 浏览
  • ACE 提出于 2024-04-27 12:27

相似问题