0

Python3で私の最後のプロジェクトのために私はカスタム怠惰ジェネレータを使用してデータを生成しました。次に、imapをプール(マルチプロセッシング)から使用します。 この時点では、計算は行われていません。 次のステップは、計算されたデータをファイルに出力することです。 これを行うには、print(list(data))またはprint(*data)のいずれかを実行すると、データ全体が計算されます(約1.5Gibが速くなります)。forループを実行して各データを印刷します。印刷する(約10e6の呼び出しが今すぐに行われますが、高速になります)。Python3の怠惰なプリント

だから、printを怠惰なジェネレータで繰り返す方法がありますか?

ありがとうございます。 itertoolsのドキュメントからこのレシピを使用

+1

ちょうど 'ループでprint'呼び出します。私は、関数呼び出しのオーバーヘッドがあなたの心配の中で最も少なくなると信じています。 – Zulan

+1

'g'がジェネレータの場合、' g:print(item) '*のコードは' 'print''を遅延ジェネレータで繰り返す*コードです。 –

+0

それは主なリードですが、私はそれを見つけません_nice_。したがって、flush = Falseの場合、これが最も効果的なソリューションになる可能性があります。 – Paul

答えて

0

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)) 
+0

これはかなりエレガントです。 – Paul

関連する問題