Sto utilizzando la cloudfile module per caricare i file in file Rackspace cloud, utilizzando qualcosa di simile pseudocodice:Come faccio a caricare molti file al momento per creare file cloud con Python?
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)
Il mio problema è che ho un sacco di piccoli file da caricare, e ci vuole troppo tempo in questo modo .
Sepolto nella documentazione, vedo che esiste una classe ConnectionPool, che presumibilmente può essere utilizzata per caricare file in parallelo.
Qualcuno potrebbe mostrare come posso caricare questo pezzo di codice più di un file alla volta?
Non è necessario 'multiprocessing' per le attività legate IO se' API cloudfiles' è thread-safe. 'pool = multiprocessing.Pool(); pool.map (upload_file, get_filenames()) 'sembra un'alternativa più semplice se si decide di usare' multiprocessing'. – jfs
@WoLpH: Grazie mille per la risposta! Quando provo il tuo codice mi imbatto in un oggetto TypeError: l'oggetto 'Queue' non è iterable ', è un errore che ho fatto? – Hobhouse
@ J.F. Sebastian: A quanto ho capito, la classe ConnectionPool dovrebbe essere thread-safe. Non riesco a spiegarmi come incorporare i suggerimenti del codice nel codice. – Hobhouse