我有一个文件,每个文件包含x
个值。
我需要能够从此文件中获取n
个值,将它们放入一个数组中,将该数组传递给一个新进程,清除该数组,然后从该文件中获取另外n
个值文件以提供给下一个过程。
我遇到的问题是当x
是一个像12这样的值时,我试图给出,让我们说,每个进程的10个值。/ p>
第一个过程会让它的前10个值没问题,但是我在将剩下的2个值留给最后一个过程时遇到了麻烦。
如果,让我们说,你告诉程序从文件中给每个进程10个值,但文件只有1个,甚至9个值,也会出现问题。
当我在最后一组小于n
我想避免取出文件中的所有值并将其一次性存储在一个数组中,因为如果该文件中有数百万个值,我可能会遇到内存问题。
以下是我尝试过的一个例子:
chunk = 10
value_list = []
with open ('file.txt', 'r') as f:
for value in f:
value_list.append(value)
if (len(value_list) >= chunk):
print 'Got %d' % len(value_list)
value_list = [] # Clear the list
# Put array into new process
在这个示例中,这将捕获每10个,但是如果在文件中发生的事件少于10,则它将无法工作。
答案 0 :(得分:2)
我在这种情况下通常只处理for循环后的最后一个(短)数组。例如,
chunk = 10
value_list = []
with open ('file.txt', 'r') as f:
for value in f:
if (len(value_list) >= chunk):
print 'Got %d' % len(value_list)
value_list = [] # Clear the list
# Put array into new process
value_list.append(value)
# send left overs to new process
if value_list:
print 'Got %d' % len(value_list)
# Put final array into new process