在pywin32com中使用内存泄漏的问题

2024-04-24 16:55:48 发布

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

我正努力想办法解决内存泄漏的问题。我想这可能是pywin32的问题,但我不完全确定。

我的代码读写单个项目似乎工作正常,但当使用组函数时,它会慢慢地泄漏内存。我怀疑这是来自必须在服务器\u句柄中传递的基于1的数组。

有人知道附近有工作吗?

def read_group(self, group, mode=OPC_SYNC, source=OPC_DS_CACHE):
    """ Read a group returning a list of Result tuples or None. """
    if group not in self.groups:
        raise OPCError("Group does not exist, add first.")

    items = []
    server_handles = []
    for name, item in self.items.items():
        if item.group == group:
            items.append(name)
            server_handles.append(item.server_handle)

    if not server_handles:
        return None

    # Note that arrays are 1 based so must add an element to beginning
    server_handles.insert(0, 0)

    if mode == OPC_SYNC:
        val, err, qual, ts = self.groups[group].SyncRead(
                Source=source,
                NumItems=len(server_handles) - 1,
                ServerHandles=server_handles)

        # Map the return arrays into a list of result tuples
        result = []
        for i in range(len(items)):
            result.append(Result(
                    items[i],
                    val[i],
                    OPC_QUALITY[qual[i]],
                    str(ts[i]),
                    err[i],
                    ))

        return result

Tags: 内存inselfreturnifservermodegroup