class AsyncZip(threading.Thread):
def __init__(self, infile, outfile):
threading.Thread.__init__(self)
self.infile = infile
self.outfile = outfile
def run(self):
f = zipfile.ZipFile(self.outfile, 'w', zipfile.ZIP_DEFLATED)
f.write(self.infile)
f.close()
os.remove(self.infile)
print 'Finished background zip of: ', self.infile
backgroundzip = AsyncZip(name, u'out\\'+name[:-3]+u'zip')
backgroundzip.setDaemon(True)
backgroundzip.start()
root.thr.stop() #метод, который прекращает опрос
#time.sleep(10)
root.destroy()
#root.quit()
Инструкция по адресу “0x1e03db2a” обратилась к памяти по адресу “0x0000002c”. Память не может быть “read”и zip файл портится с ощибкой CRC
но не всегда - как я понимаю, только когда мы пытаемся завершить приложение через root.destroy() до того, как завершится поток архивации.
если вместо root.destroy() использовать root.quit() то такое сообщение не вываливается , но zip файл портится всё равно(правда по другому)
Решением является перед вызовом root.destroy() поставить time.sleep(x) где x - значительное число(например 10). Но мне не нравится такой способ. Может есть какие способы решения?