想象一下,我们有一段代码可以将大数据切割成更小的数据并对其进行一些处理。
def node_cut(input_file):
NODE_LENGTH = 500
count_output = 0
node_list=[]
for line in input_file.readlines():
if len(node_list) >= NODE_LENGTH :
count_output += 1
return( node_list,count_output )
node_list=[]
node,t=line.split(',')
node_list.append(node)
if __name__ =='__main__':
input_data = open('all_nodes.txt','r')
node_list, count_output = node_cut(input_data)
some_process(node_list)
当node_cut返回第一个数据列表时,for循环停止继续执行其余的大数据。我如何确保它返回但仍然循环继续?
答案 0 :(得分:3)
使用yield
代替return
。有关其工作原理,请参阅this question或this (somewhat old) article。
答案 1 :(得分:3)
使用yield
:
def node_cut(input_file):
NODE_LENGTH = 500
count_output = 0
node_list=[]
for line in input_file.readlines():
if len(node_list) >= NODE_LENGTH :
count_output += 1
yield( node_list,count_output )
node_list=[]
node,t=line.split(',')
node_list.append(node)
if __name__ =='__main__':
with open('all_nodes.txt','r') as input_data:
for node_list, count_output in node_cut(input_data):
some_process(node_list)