2015-12-02 2 views
0

Dans le TransferConfig, qu'est-ce que va augmenter ou diminuer avec max_io_queue avec boto3.transfer.download_file() ??Que fait le réglage "max_io_queue" dans boto3.s3.transfer.config?

J'ai essayé de regarder dans le code source. Il semble se rapporter à la taille de la file d'attente dans MultipartDownloader. Si max_concurrency est corrigé, je ne vois pas comment cette max_io_queue aurait un effet tant que max_io_queue> max_currency. S'il vous plait corrigez moi si je me trompe.

class TransferConfig(object): 
    def __init__(self, 
       multipart_threshold=8 * MB, 
       max_concurrency=10, 
       multipart_chunksize=8 * MB, 
       num_download_attempts=5, 
       max_io_queue=100): 

Répondre

1

La file d'attente synchronise les écritures de fichier. Un thread donné peut pousser n'importe quel nombre d'écritures dans la file d'attente sans bloquer jusqu'à ce que la file atteigne sa taille maximale. À ce stade, un appel à put bloquera le thread jusqu'à ce qu'il reste de l'espace. Si nous n'avions pas de limite de taille sur la file d'attente, quelqu'un avec une connexion rapide et un lecteur lent pourrait manger toute sa mémoire avec de futures écritures.

+0

Parfait, merci! – ChromeHearts