Auto-save after every 100 results are calculated.
- Saving is still done on shutdown regardless. - If the program is not shutdown cleanly at most 100 results will be lost and need to be recalculated.
This commit is contained in:
parent
4157e5b04c
commit
f9645c12bd
2 changed files with 17 additions and 6 deletions
|
|
@ -638,9 +638,9 @@ class Screen:
|
|||
for index in range(worker_count):
|
||||
worker_ = worker.Worker(self._is_paused, is_being_tested)
|
||||
workers.append(worker_)
|
||||
future = worker_.job_runner(
|
||||
self._summary, self._log, self._summary._jobs_added_event,
|
||||
self._appearance_changed_event)
|
||||
future = worker_.job_runner(self, self._summary, self._log,
|
||||
self._summary._jobs_added_event,
|
||||
self._appearance_changed_event)
|
||||
worker_.future = asyncio.ensure_future(future,
|
||||
loop=self._main_loop)
|
||||
self.workers = workers
|
||||
|
|
@ -853,6 +853,12 @@ class Screen:
|
|||
subprocess.Popen(["xdg-open", path], stdout=subprocess.PIPE,
|
||||
stderr=subprocess.PIPE)
|
||||
|
||||
def save(self):
|
||||
worker.Worker.unsaved_jobs_total = 0
|
||||
pickle_path = os.path.join(tools.CACHE_PATH, "summary.pickle")
|
||||
open_compressed = functools.partial(gzip.open, compresslevel=1)
|
||||
tools.dump_pickle_safe(self, pickle_path, open=open_compressed)
|
||||
|
||||
def _select_entry_at_position(self, x, y, view_width, view_height):
|
||||
border_width = 1
|
||||
if x < border_width or y < border_width or x > view_width or \
|
||||
|
|
@ -1057,8 +1063,7 @@ def main(root_path, loop, worker_count=None, editor_command=None, theme=None,
|
|||
log.log_message("Program stopped.")
|
||||
finally:
|
||||
notifier.stop()
|
||||
open_compressed = functools.partial(gzip.open, compresslevel=1)
|
||||
tools.dump_pickle_safe(screen, pickle_path, open=open_compressed)
|
||||
screen.save()
|
||||
|
||||
|
||||
@contextlib.contextmanager
|
||||
|
|
|
|||
|
|
@ -12,6 +12,8 @@ import vigil.tools as tools
|
|||
|
||||
class Worker:
|
||||
|
||||
unsaved_jobs_total = 0
|
||||
|
||||
def __init__(self, is_already_paused, is_being_tested):
|
||||
self.is_already_paused = is_already_paused
|
||||
self.is_being_tested = is_being_tested
|
||||
|
|
@ -34,7 +36,7 @@ class Worker:
|
|||
data = await self.process.stdout.readline()
|
||||
return tools.Status(int(data))
|
||||
|
||||
async def job_runner(self, summary, log, jobs_added_event,
|
||||
async def job_runner(self, screen, summary, log, jobs_added_event,
|
||||
appearance_changed_event):
|
||||
await self.create_process()
|
||||
while True:
|
||||
|
|
@ -50,6 +52,10 @@ class Worker:
|
|||
os.kill(os.getpid(), signal.SIGINT)
|
||||
break
|
||||
await self.result.run(log, appearance_changed_event, self)
|
||||
self.unsaved_jobs_total += 1
|
||||
if self.unsaved_jobs_total == 100:
|
||||
log.log_message("Auto-saving...")
|
||||
screen.save()
|
||||
summary.completed_total += 1
|
||||
jobs_added_event.clear()
|
||||
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue