在用户定义的Python函数中引用大变量的最有效方法是什么?

时间:2017-06-29 16:01:26

标签: python python-3.x function optimization arguments

我想知道是否有更有效的方法从Python中的函数引用大变量(例如包含数十万个条目的数组)而不是简单地将其作为参数传递?我知道global是一种选择,但它是如此......不可靠,因为缺乏一个更好的词,我几乎认为它无关紧要(除非,或许,有人可以解释为什么这不是'在这种情况下)。我问,因为我最近写了一个调用函数的脚本:

def build(unique,gene,index): ###Concatenates entries from arguments into single string###
    ###Builds array from entries in all of unique's sublists###
    hold= []
    hold.append([category[index] for category in unique[1]])
    ###Builds a list of string concatenated from entries in other lists/arrays###
    line= ['\t'.join(gene[0:7]),'\t'.join(hold[0]),'\t'.join(gene[9:len(gene)])]
    ###Concatenates array in a single string###
    line= '\t'.join(line)
    return line

来自循环:

for gene in table[1:]:
    buffer.append(build(unique,gene,table.index(gene)))

变量unique是一个包含大约500k条目的数组,循环运行大约60k次。我知道这肯定需要一段时间(目前这个循环目前大约只有12分钟),但我希望有一种优化unique所用方法的方法。在函数中引用,因此每次都不必传递大量数组。

提前致谢!

1 个答案:

答案 0 :(得分:0)

这里没有任何大的传递。 unique每次都是对同一个列表的引用;在函数调用中没有复制任何内容。

您需要寻找其他地方进行优化。