小编Fra*_*que的帖子

NDB在长时间请求期间不清除内存

我目前正在将一个长时间运行的作业卸载到TaskQueue来计算数据存储区中NDB实体之间的连接.

基本上,此队列处理几个实体键列表,这些实体键与节点中querynode_in_connected_nodes函数相关联GetConnectedNodes:

class GetConnectedNodes(object):
"""Class for getting the connected nodes from a list of nodes in a paged way"""
def __init__(self, list, query):
    # super(GetConnectedNodes, self).__init__()
    self.nodes = [ndb.model.Key('Node','%s' % x) for x in list]
    self.cursor = 0
    self.MAX_QUERY = 100
    # logging.info('Max query - %d' % self.MAX_QUERY)
    self.max_connections = len(list)
    self.connections = deque()
    self.query=query

def node_in_connected_nodes(self):
    """Checks if a node exists in the connected nodes of the next node in the 
       node list. …
Run Code Online (Sandbox Code Playgroud)

python google-app-engine memory-leaks task-queue app-engine-ndb

7
推荐指数
1
解决办法
1095
查看次数

将范围元组列表折叠到重叠范围中

我正在寻找解决这个问题的最有效内存的方法.

我有一个元组列表,表示句子中的部分字符串匹配:

[(0, 2), (1, 2), (0, 4), (2,6), (23, 2), (22, 6), (26, 2), (26, 2), (26, 2)]
Run Code Online (Sandbox Code Playgroud)

每个元组的第一个值是匹配的起始位置,第二个值是长度.

我们的想法是折叠列表,以便仅报告最长的继续字符串匹配.在这种情况下,它将是:

[(0,4), (2,6), (22,6)]
Run Code Online (Sandbox Code Playgroud)

我不想只是最长的范围,比如在算法中找到最长的非重叠序列,但我希望所有范围最长时间折叠.

万一你想知道,我正在使用Aho-Corasick的纯python实现来将静态字典中的术语与给定的文本片段进行匹配.

编辑:由于这些元组列表的性质,应单独打印重叠但不是自包含的范围.例如,在单词betazzeta词典中,匹配betazeta[(0,5),(4,8)].由于这些范围重叠,但没有一个包含在另一个中,答案应该是[(0,5),(4,8)].我还修改了上面的输入数据集,以便涵盖这种情况.

谢谢!

python tuples overlapping-matches

5
推荐指数
1
解决办法
2634
查看次数