Używam cloudfile module przesyłanie plików do plików Rackspace chmurze, używając coś takiego Pseudokod:Jak przesłać wiele plików w tym samym czasie do plików w chmurze za pomocą Pythona?
import cloudfiles
username = '---'
api_key = '---'
conn = cloudfiles.get_connection(username, api_key)
testcontainer = conn.create_container('test')
for f in get_filenames():
obj = testcontainer.create_object(f)
obj.load_from_filename(f)
Mój problem jest, że mam dużo małych plików do przesłania, a to trwa zbyt długo w ten sposób .
Pochowany w dokumentacji, widzę, że istnieje klasa ConnectionPool, która podobno może być używana do przesyłania plików w równych odstępach.
Czy ktoś mógłby pokazać, w jaki sposób mogę przesłać ten fragment kodu więcej niż jednego pliku naraz?
Nie musisz 'multiprocessing' dla zadań związanych IO jeśli' cloudfiles' API jest bezpieczny wątku. 'pool = multiprocessing.Pool(); pool.map (upload_file, get_filenames()) 'wydaje się być prostszą alternatywą, jeśli zdecydowałeś się użyć' multiprocessing'. – jfs
@WoLpH: Dziękuję bardzo za odpowiedź! Kiedy próbuję twojego kodu, napotkam obiekt 'TypeError: 'Kolejka' nie jest iterowalna", czy to błąd, który popełniłem? – Hobhouse
@ J.F. Sebastian: Jak rozumiem, klasa ConnectionPool ma być wątkowo bezpieczna. Po prostu nie mogę się skupić na tym, jak włączyć sugestie do kodu. – Hobhouse