[英]Python3, a lazy print
對於我在Python3中的最后一個項目,我使用了一個自定義的惰性生成器來生成數據。 然后從池中使用imap (多處理)。 因此,到目前為止,尚未進行任何計算。 下一步是將計算的數據輸出到文件中。 為此,我要么print(list(data))
要么print(*data)
導致整個數據的計算(現在大約為1.5Gib,位會快速增長),或者進行for
循環並打印每條數據,這需要進行大量打印工作(目前大約有10e6個調用,但會很快增長)。
因此,有沒有辦法使print
在惰性發生器上進行迭代?
謝謝。
使用itertools文檔中的此配方:
def grouper(iterable, n, fillvalue=None):
"Collect data into fixed-length chunks or blocks"
# grouper('ABCDEFG', 3, 'x') --> ABC DEF Gxx
args = [iter(iterable)] * n
return izip_longest(fillvalue=fillvalue, *args)
您可以批量調用以print
自己:
for batch in grouper(data, 1000, ''):
print('\n'.join(batch))
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.