Python3 ifxPy内存泄漏

时间:2018-10-16 15:15:08

标签: python memory-leaks informix

我通过使用systemd创建了一个linux服务。我的服务调用Python脚本。该脚本每30秒在无限循环中调用一次函数,而我正在使用time.sleep(30)每30秒循环一次。我的脚本在Informix数据库上打开连接,读取数据,在本地MongoDB中插入数据,调用Web服务。

但是服务内存永远不会减少。内存每次增加。如果我重新启动服务,内存将被完全释放。该服务从19MB开始,在14小时后达到555MB。

这是我的代码:

def populate_app():
    ifx_connection = IfxPy.connect(ifx_param, "", "")
    stmt = IfxPy.exec_immediate(ifx_connection, sql)
    dictionary = IfxPy.fetch_assoc(stmt) # Get data key / value

    ...

    IfxPy.close(ifx_connection)

while True:
    populate_app()
    time.sleep(30)

内存泄漏是否可能是由于requestifxPypymongo库引起的?

我在循环中注释了所有代码,并在populate_app函数中仅保留了这两行:

ifx_connection = IfxPy.connect(ifx_param, "", "")
stmt = IfxPy.exec_immediate(ifx_connection, sql)

因此内存不会增加。然后我把这一行:

dictionary = IfxPy.fetch_assoc(stmt) # Get data key / value

再次出现内存泄漏。所以我想ifxPy有问题

1 个答案:

答案 0 :(得分:1)

您可以尝试释放调用free_result()的结果集内存吗?

类似的东西:

....
....
# Bulk insert
if new_users:
    user.insert_many(new_users)
if error_user_data:
    user_error.insert_many(error_user_data)

IfxPy.free_result(stmt)
IfxPy.close(ifx_connection)