Problem z nadpisywaniem pamięci wątku

0

Witam. Już opisuję sytuację. Napisałem w języku Python program do ściągania zdjęć ze stron internetowych. GUI programu zrobione zostało w oparciu o Tkinter i działa ono w głównej aplikacji (bez tworzenia nowego wątku). Do pola edycji wkleja się adres strony, z której ma być pobrane zdjęcie. Mamy przycisk do rozpoczęcia downloadu. Po kliknięciu uruchamiany jest wątek, który ściąga plik i wypisuje komunikaty polu tekstowym (rozpoczęto pobieranie, itp.). Gdyby download nie był przeprowadzony w wątku, to by się zawieszało GUI na czas ściągania. W systemie Linux ten skrypt działa bardzo dobrze. U kolegi pod Windowsem zdjęcia są zapisywane tak jakby coś naruszało pamięć wątku ściągającego - pobrane zdjęcia są nieczytelne, kolory w miarę się zgadzają, więc pewnie tylko część danych jest naruszona, niektórych zdjęć nie da się odczytać, więc pewnie w nich nagłówki plików popsuło. Do pobierania plików używam urllib2:

webFile = urllib2.urlopen(fileurl)
localFile = open(mangaDir+fileurl.split('/')[-1], 'w')
localFile.write(webFile.read())
webFile.close()
localFile.close()

Wątek tworzę w taki sposób:

start_new_thread(self.downloadList,())

Prawdopodobnie Win inaczej zarządza pamięcią wątków, tak więc pytanie brzmi jak zabezpieczyć pamięć tego wątku, by wyeliminować problem pod Win. Czy np. pobieranie pliku w "chunk'ach", zamiast w całości do pamięci coś pomoże?

1

Ech, ludzie, ludzie. Otwórz plik do zapisu BINARNIE, 'wb'. Windows stosuje 'tradycyjne' kodowanie nowej linii, '\r\n', Linux samo '\n', w wypadku plików otwartych w trybie tekstowym odstawiana jest translacja zależna od systemu podczas zapisu.

0

Dzięki ;)

1 użytkowników online, w tym zalogowanych: 0, gości: 1