簡體   English   中英

Python3,懶惰的打印

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM