Форум сайта python.su
Пишу программу в которой происходит периодический сброс данных на диск (файл раз в минуту). Этот файл для экономии места сжимается ZipFile в отдельном потоке.
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
Отредактировано (Ноя. 12, 2009 20:27:04)
Офлайн
Как я понимаю проблему - создавая свой дополнительный поток внутри потока Tk и ставя на него Daemon() программа не должна прекращаться пока поток не прекратится, но когда закрываем Tk рушится всё, включая порождённые потоки с Daemon(). Можно как-то заставить python не убивать отдельные потоки или как-то проверить их живучесть (isAlive - знаю, но не могу обратиться к потоку, т.к. не могу его найти)
Офлайн