我想知道是否有更有效的方法从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
所用方法的方法。在函数中引用,因此每次都不必传递大量数组。
提前致谢!
答案 0 :(得分:0)
这里没有任何大的传递。 unique
每次都是对同一个列表的引用;在函数调用中没有复制任何内容。
您需要寻找其他地方进行优化。