diff options
| -rw-r--r-- | mini-scalene.py | 16 | ||||
| -rw-r--r-- | tests/overload.py | 5 |
2 files changed, 13 insertions, 8 deletions
diff --git a/mini-scalene.py b/mini-scalene.py index 4d3909b..5d8f6b2 100644 --- a/mini-scalene.py +++ b/mini-scalene.py @@ -58,9 +58,7 @@ class mini_scalene: @staticmethod def exit_handler(): '''Turn off our profiling signals and pretty-print profiling information.''' - signal.signal(signal.ITIMER_PROF, signal.SIG_IGN) - signal.signal(signal.SIGVTALRM, signal.SIG_IGN) - signal.setitimer(signal.ITIMER_PROF, 0) + mini_scalene.disable_signals() # If we've collected any samples, dump them. print("CPU usage:") if mini_scalene.total_cpu_samples > 0: @@ -79,6 +77,12 @@ class mini_scalene: print("(did not run long enough to profile)") @staticmethod + def disable_signals(): + signal.signal(signal.ITIMER_PROF, signal.SIG_IGN) + signal.signal(signal.SIGVTALRM, signal.SIG_IGN) + signal.setitimer(signal.ITIMER_PROF, 0) + + @staticmethod def cpu_signal_handler(sig, frame): keys = mini_scalene.compute_frames_to_record(frame) for key in keys: @@ -145,11 +149,9 @@ class mini_scalene: # FIXME Assume GuixSD. Makes filtering easy if '/gnu/store' in filename: return False - if 'mini-scalene.py' in filename: + if filename[0] == '<': return False - if '<frozen importlib._bootstrap>' in filename: - return False - if '<frozen importlib._bootstrap_external>' in filename: + if 'mini-scalene.py' in filename: return False return True diff --git a/tests/overload.py b/tests/overload.py index 21ee125..9bba9a1 100644 --- a/tests/overload.py +++ b/tests/overload.py @@ -2,6 +2,9 @@ import asyncio import time async def busy_task(): + i = 0 + while i < 100: + i += 1 await asyncio.sleep(3.0) return 1 @@ -14,7 +17,7 @@ async def main(): # which makes the python intepreter not respond to # mini-scalene / SCALENE while True: - if time.time() - start_time > 3.5: + if time.time() - start_time > 4.0: break # print(asyncio.all_tasks()) await asyncio.sleep(0) # yield |
