def baixar(qtd): """ busca e salva a quantidade ``qtd`` de bandeiras """ qt_bytes = 0 qt_arqs = 0 for num, sigla in enumerate(ler_siglas(qtd), 1): # baixar bandeiras com inicial 'a' ou 'b' nome = sigla + '-lgflag.gif' print('\t%3d\t%s' % (num, nome)) url = BASE_URL+nome with urllib.request.urlopen(url) as img_orig: img = img_orig.read() qt_bytes += salvar(nome, img) qt_arqs += 1 return qt_bytes, qt_arqs if __name__=='__main__': reportar(baixar) """ $ python sincrono.py 3 baixando 3 arquivos... 1 aa-lgflag.gif 2 ac-lgflag.gif 3 ae-lgflag.gif 11889 bytes baixados em 3 arquivos tempo transcorrido: 12.62s """
print '\t\t\t%3d\t%s --> salvo' % (numero, nome) conj_baixar.discard(nome) if not conj_baixar: ioloop.IOLoop.instance().stop() def faz_processar(nome, numero): def _interna(request): processar(request, nome, numero) return _interna def baixar(qtd): """ busca a quantidade ``qtd`` de bandeiras """ http_client = httpclient.AsyncHTTPClient() for num, sigla in enumerate(ler_siglas(qtd), 1): nome = sigla + '-lgflag.gif' print '\t%3d\t%s' % (num, nome) url = BASE_URL+nome proc = faz_processar(nome, num) conj_baixar.add(nome) http_client.fetch(url, proc) ioloop.IOLoop.instance().start() return qt_bytes, qt_arqs if __name__=='__main__': reportar(baixar)