Skip to content
Closed
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
33 changes: 31 additions & 2 deletions codecarbon/emissions_tracker.py
Original file line number Diff line number Diff line change
Expand Up @@ -302,7 +302,7 @@ def start(self) -> None:
self._scheduler.start()

@suppress(Exception)
def stop(self) -> Optional[float]:
def _stop(self, destroy: bool) -> Optional[float]:
"""
Stops tracking the experiment
:return: CO2 emissions in kgs
Expand All @@ -311,7 +311,10 @@ def stop(self) -> Optional[float]:
logger.error("Need to first start the tracker")
return None

self._scheduler.shutdown()
if destroy:
self._scheduler.shutdown()
else:
self._scheduler.pause()

# Run to calculate the power used from last
# scheduled measurement to shutdown
Expand All @@ -328,6 +331,32 @@ def stop(self) -> Optional[float]:
self.final_emissions = emissions_data.emissions
return emissions_data.emissions

@suppress(Exception)
def pause(self):
"""
Temporarily halts tracking the experiment.
Logs intermediate experiment tracking results.
:return: CO2 emissions in kgs
"""
return self._stop(destroy=False)

@suppress(Exception)
def resume(self):
"""
Resumes previously paused tracking
"""
logger.info("Restarting tracker")
self._last_measured_time = self._start_time = time.time()
self._scheduler.resume()

@suppress(Exception)
def stop(self) -> Optional[float]:
"""
Stops tracking the experiment
:return: CO2 emissions in kgs
"""
return self._stop(destroy=True)

def _prepare_emissions_data(self, delta=False) -> EmissionsData:
"""
:delta: True to return only the delta comsumption since last call
Expand Down