Retourner au contenu associé (entrée de forum : écrire la sortie d'un générateur)
Posté par benoar le 02 juillet 2013 à 01:09. En réponse au message écrire la sortie d'un générateur. Évalué à 3.
Je vois deux solutions :
1) Utiliser un StringIO, que tu remplies de X caractères, et que tu écris régulièrement dans ton fichier, genre
import io s = io.BytesIO() for c in gen(): for i in range(4096): s.write(c) f.write(s) s.truncate(0)
cf http://docs.python.org/3.0/library/io.html#io.BytesIO (je suppose que ce sera plutôt des bytes que des caractères que tu écriras) C'est un peu équivalent à la solotion proposée par BFG.
2) Mapper le fichier en mémoire, et écrire directement les caractères dans ce tableau :
import mmap mm = mmap.mmap(f.fileno, 1000000) for i, c in enumerate(gen()): mm[i] = c f.flush()
cf http://docs.python.org/3/library/mmap.html
AltStyle によって変換されたページ (->オリジナル) / アドレス: モード: デフォルト 音声ブラウザ ルビ付き 配色反転 文字拡大 モバイル
# Bufferiser soi-même, ou laisser l'OS faire
Posté par benoar . En réponse au message écrire la sortie d'un générateur. Évalué à 3.
Je vois deux solutions :
1) Utiliser un StringIO, que tu remplies de X caractères, et que tu écris régulièrement dans ton fichier, genre
cf http://docs.python.org/3.0/library/io.html#io.BytesIO (je suppose que ce sera plutôt des bytes que des caractères que tu écriras)
C'est un peu équivalent à la solotion proposée par BFG.
2) Mapper le fichier en mémoire, et écrire directement les caractères dans ce tableau :
cf http://docs.python.org/3/library/mmap.html