From 52944eb9272906c4a3fb73b6d82e3d9c2d517461 Mon Sep 17 00:00:00 2001 From: Robert Chisholm Date: Fri, 8 Dec 2023 14:35:56 +0000 Subject: [PATCH 1/2] Episode: Function Level Profiling (#6) Closes #3 --- episodes/fig/snakeviz-home.png | Bin 0 -> 94055 bytes .../fig/snakeviz-worked-example-icicle.png | Bin 0 -> 57626 bytes .../fig/snakeviz-worked-example-sunburst.png | Bin 0 -> 51469 bytes episodes/files/pred-prey/predprey.py | 421 ++++++++++++++++++ .../files/snakeviz-worked-example/example.py | 36 ++ .../files/snakeviz-worked-example/out.prof | Bin 0 -> 1116 bytes .../files/travelling-sales/travellingsales.py | 48 ++ episodes/profiling-functions.md | 295 +++++++++++- episodes/profiling-introduction.md | 4 +- learners/setup.md | 2 +- 10 files changed, 800 insertions(+), 6 deletions(-) create mode 100644 episodes/fig/snakeviz-home.png create mode 100644 episodes/fig/snakeviz-worked-example-icicle.png create mode 100644 episodes/fig/snakeviz-worked-example-sunburst.png create mode 100644 episodes/files/pred-prey/predprey.py create mode 100644 episodes/files/snakeviz-worked-example/example.py create mode 100644 episodes/files/snakeviz-worked-example/out.prof create mode 100644 episodes/files/travelling-sales/travellingsales.py diff --git a/episodes/fig/snakeviz-home.png b/episodes/fig/snakeviz-home.png new file mode 100644 index 0000000000000000000000000000000000000000..65c3beb7d469c62e4d971bcad718aaa358158915 GIT binary patch literal 94055 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 literal 0 HcmV?d00001 diff --git a/episodes/fig/snakeviz-worked-example-icicle.png b/episodes/fig/snakeviz-worked-example-icicle.png new file mode 100644 index 0000000000000000000000000000000000000000..c621b5467c1d8b09df4c9370f46186e631e87267 GIT binary patch literal 57626 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 literal 0 HcmV?d00001 diff --git a/episodes/fig/snakeviz-worked-example-sunburst.png b/episodes/fig/snakeviz-worked-example-sunburst.png new file mode 100644 index 0000000000000000000000000000000000000000..12abe3be319eedfa8ae0221e22cb9c7029f9dc51 GIT binary patch literal 51469 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¬#2dHuU( zpIk1^4&UJ?y%Ao#&OxtjUF=cP!3oDcu$0&DcU&WtqB={V{%QeL~_y?V+e_`?DDD7A3{GIY zRCGEW^t-!qhAZeGui$+FF7{f>t!v?O#yI9nb!!9+x0@yJuM8Jkw`2U>N)6m*e*vH^ zGCYF>gF~fhxVWqyYmPFH`wlE9NV+&QVjC{E@~k}a-y#!GV%ci&vYQOsZo$(MpabKf}E82|6GrZXK*; zJ!gvY&P~x?(mAgqA(n$>p<8g{JLfagvc-4X@K=C0WVu@@dt+Fj^MpRZ!(X#lkH08b zv}D_Ai4B@V+0nBa+j{3={yNGxKh-TcgbaYo=7ARJlt{p^(Wu_^VEkqbvS zH^Dns?0-PNd1`TRBays(<0T-^|0+&snqTI{6Y6>u=mcMw8}l!0-zl(6r=yp4qKF%w|D;=rpP@T*&cz zNE$=#@VWya! zuWm6GORv#w>aZ7V+s=$V=5)f}xDdZxJ#w+uak4bYt+IW%{loRK{|nXbK}o?jQX5MV ztoMXNS=G&S@;@{~ZM4j*Ydwu5389H!@TXn}{6-s6$3c%nS5=^r>Swi0I{foeTAje& z48R%v3bJqM%EZ|PIssViiSxxhkMlfH?d3&NN`exSepquheQB_ZAH1QSegl&4F=(@X zjAw698%k@?xp91x8lJt868j-{h}D*)Iw-P))rg7;7z!;wxUd

3`FeDjnKe`nizA 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[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 0 in original - redundant? + avoid_velocity_x += SAME_SPECIES_AVOIDANCE_RADIUS / separation * dx + avoid_velocity_y += SAME_SPECIES_AVOIDANCE_RADIUS / separation * dy + + # Compute group centre as the average of the nearby prey positions and a velocity to move towards the group centre + if group_centre_count > 0: + group_centre_x /= group_centre_count + group_centre_y /= group_centre_count + group_velocity_x = group_centre_x - self.x + group_velocity_y = group_centre_y - self.y + + self.steer_x += group_velocity_x + avoid_velocity_x + self.steer_y += group_velocity_y + avoid_velocity_y + + def move(self): + # Integrate steering forces and cap velocity + self.vx += self.steer_x + self.vy += self.steer_y + + speed = math.sqrt(self.vx * self.vx + self.vy * self.vy) + if speed > 1.0: + self.vx /= speed + self.vy /= speed + + # Integrate velocity + self.x += self.vx * DELTA_TIME + self.y += self.vy * DELTA_TIME + + # Bound the position within the environment - can this be moved + self.x = max(self.x, MIN_POSITION) + self.x = min(self.x, MAX_POSITION) + self.y = max(self.y, MIN_POSITION) + self.y = min(self.y, MAX_POSITION) + + # Reduce life by one unit of energy + self.life -= 1 + + def eaten_or_starve(self, predator_list): + predator_index = -1 + closest_pred = PRED_KILL_DISTANCE + + # Iterate predator_location messages to find the closest predator + for i in range(len(predator_list)): + predator = predator_list[i] + if predator.life < PRED_HUNGER_THRESH: + # Check if the two predators are within interaction radius + dx = self.x - predator.x + dy = self.y - predator.y + distance = math.sqrt(dx * dx + dy * dy) + + if distance < closest_pred: + predator_index = i + closest_pred = distance + + if predator_index >= 0: + predator_list[predator_index].life += GAIN_FROM_FOOD_PREDATOR + return True + + # If the life has reduced to 0 then the prey should die or starvation + if self.life < 1: + return True + return False + + def reproduce(self): + if np.random.uniform() < REPRODUCE_PREY_PROB: + self.life /= 2 + + child = Prey() + child.x = np.random.uniform() * BOUNDS_WIDTH - BOUNDS_WIDTH / 2.0 + child.y = np.random.uniform() * BOUNDS_WIDTH - BOUNDS_WIDTH / 2.0 + child.vx = np.random.uniform() * 2 - 1 + child.vy = np.random.uniform() * 2 - 1 + child.life = self.life + + +class Predator: + def __init__(self): + global NEXT_PRED_ID + self.id = NEXT_PRED_ID + NEXT_PRED_ID += 1 + self.x = 0.0 + self.y = 0.0 + self.vx = 0.0 + self.vy = 0.0 + self.steer_x = 0.0 + self.steer_y = 0.0 + self.life = 0 + + def follow_prey(self, prey_list): + # Find the closest prey by iterating the prey_location messages + closest_prey_x = 0.0 + closest_prey_y = 0.0 + closest_prey_distance = PRED_PREY_INTERACTION_RADIUS + is_a_prey_in_range = 0 + + for prey in prey_list: + # Check if prey is within sight range of predator + dx = self.x - prey.x + dy = self.y - prey.y + separation = math.sqrt(dx * dx + dy * dy) + + if separation < closest_prey_distance: + closest_prey_x = prey.x + closest_prey_y = prey.y + closest_prey_distance = separation + is_a_prey_in_range = 1 + + # If there was a prey in range, steer the predator towards it + if is_a_prey_in_range: + self.steer_x = closest_prey_x - self.x + self.steer_y = closest_prey_y - self.y + + + def avoid_predators(self, predator_list): + # Fetch this predator's position + avoid_velocity_x = 0.0 + avoid_velocity_y = 0.0 + + # Add a steering factor away from each other predator. Strength increases with closeness. + for other in predator_list: + # Check if the two predators are within interaction radius + dx = self.x - other.x + dy = self.y - other.y + separation = math.sqrt(dx * dx + dy * dy) + + if separation < SAME_SPECIES_AVOIDANCE_RADIUS and separation > 0.0 and self.id != other.id: + avoid_velocity_x += SAME_SPECIES_AVOIDANCE_RADIUS / separation * dx + avoid_velocity_y += SAME_SPECIES_AVOIDANCE_RADIUS / separation * dy + + self.steer_x += avoid_velocity_x + self.steer_y += avoid_velocity_y + + def move(self): + # Integrate steering forces and cap velocity + self.vx += self.steer_x + self.vy += self.steer_y + + speed = math.sqrt(self.vx * self.vx + self.vy * self.vy) + if speed > 1.0: + self.vx /= speed + self.vy /= speed + + # Integrate velocity + self.x += self.vx * DELTA_TIME * PRED_SPEED_ADVANTAGE + self.y += self.vy * DELTA_TIME * PRED_SPEED_ADVANTAGE + + # Bound the position within the environment + self.x = max(self.x, MIN_POSITION) + self.x = min(self.x, MAX_POSITION) + self.y = max(self.y, MIN_POSITION) + self.y = min(self.y, MAX_POSITION) + + # Reduce life by one unit of energy + self.life -= 1 + + def starve(self): + # Did the predator starve? + if self.life < 1: + return True + return False + + def reproduce(self): + if np.random.uniform() < REPRODUCE_PRED_PROB: + self.life /= 2 + + child = Predator() + child.x = np.random.uniform() * BOUNDS_WIDTH - BOUNDS_WIDTH / 2.0 + child.y = np.random.uniform() * BOUNDS_WIDTH - BOUNDS_WIDTH / 2.0 + child.vx = np.random.uniform() * 2 - 1 + child.vy = np.random.uniform() * 2 - 1 + child.life = self.life + return child + +class Grass: + def __init__(self): + self.x = 0.0 + self.y = 0.0 + self.dead_cycles = 0 + self.available = 1 + + def grow(self): + new_dead_cycles = self.dead_cycles + 1 + if self.dead_cycles == GRASS_REGROW_CYCLES: + self.dead_cycles = 0 + self.available = 1 + + if self.available == 0: + self.dead_cycles = new_dead_cycles + + + def eaten(self, prey_list): + if self.available: + prey_index = -1 + closest_prey = GRASS_EAT_DISTANCE + + # Iterate prey_location messages to find the closest prey + for i in range(len(prey_list)): + prey = prey_list[i] + if prey.life < PREY_HUNGER_THRESH: + # Check if they are within interaction radius + dx = self.x - prey.x + dy = self.y - prey.y + distance = math.sqrt(dx*dx + dy*dy) + + if distance < closest_prey: + prey_index = i + closest_prey = distance + + if prey_index >= 0: + # Add grass eaten message + prey_list[prey_index].life += GAIN_FROM_FOOD_PREY + + # Update grass agent variables + self.dead_cycles = 0 + self.available = 0 + +class Model: + + def __init__(self, steps = 250): + self.steps = steps + self.num_prey = 200 + self.num_predators = 50 + self.num_grass = 5000 + + def _init_population(self): + # Initialise prey agents + self.prey = [] + for i in range(self.num_prey): + p = Prey() + p.x = np.random.uniform(-1.0, 1.0) + p.y = np.random.uniform(-1.0, 1.0) + p.vx = np.random.uniform(-1.0, 1.0) + p.vy = np.random.uniform(-1.0, 1.0) + p.life = np.random.randint(10, 50) + self.prey.append(p) + + # Initialise predator agents + self.predators = [] + for i in range(self.num_predators): + p = Predator() + p.x = np.random.uniform(-1.0, 1.0) + p.y = np.random.uniform(-1.0, 1.0) + p.vx = np.random.uniform(-1.0, 1.0) + p.vy = np.random.uniform(-1.0, 1.0) + p.life = np.random.randint(10, 15) + self.predators.append(p) + + # Initialise grass agents + self.grass = [] + for i in range(self.num_grass): + g = Grass() + g.x = np.random.uniform(-1.0, 1.0) + g.y = np.random.uniform(-1.0, 1.0) + self.grass.append(g) + + def _step(self): + ## Shuffle agent list order to avoid bias + np.random.shuffle(self.predators) # todo, this probably doesn't like Python lists + np.random.shuffle(self.prey) + + for p in self.predators: + p.follow_prey(self.prey) + for p in self.prey: + p.avoid_predators(self.predators) + + for p in self.prey: + p.flock(self.prey) + for p in self.predators: + p.avoid_predators(self.predators) + + for p in self.prey: + p.move() + for p in self.predators: + p.move() + + + for g in self.grass: + g.eaten(self.prey) + + self.prey = [p for p in self.prey if not p.eaten_or_starve(self.predators)] + self.predators = [p for p in self.predators if not p.starve()] + + children = [] + for p in self.prey: + c = p.reproduce() + if c: + children.append(c) + self.predators.extend(children) + children = [] + for p in self.predators: + c = p.reproduce() + if c: + children.append(c) + self.predators.extend(children) + for g in self.grass: + g.grow() + + def _init_log(self): + self.prey_log = [len(self.prey)] + self.predator_log = [len(self.predators)] + self.grass_log = [sum(g.available for g in self.grass)/20] + + def _log(self): + self.prey_log.append(len(self.prey)) + self.predator_log.append(len(self.predators)) + self.grass_log.append(sum(g.available for g in self.grass)/20) + + def _plot(self): + plt.figure(figsize=(16,10)) + plt.rcParams.update({'font.size': 18}) + plt.xlabel("Step") + plt.ylabel("Population") + plt.plot(range(0, len(self.prey_log)), self.prey_log, 'b', label="Prey") + plt.plot(range(0, len(self.predator_log)), self.predator_log, 'r', label="Predators") + plt.plot(range(0, len(self.grass_log)), self.grass_log, 'g', label="Grass/20") + plt.legend() + plt.savefig('predprey_out.png') + + def run(self): + # init + self._init_population() + self._init_log() + # execute + for i in range(self.steps): + self._step() + self._log() + # plot graph of results + self._plot() + + + + +model = Model() +model.run() \ No newline at end of file diff --git a/episodes/files/snakeviz-worked-example/example.py b/episodes/files/snakeviz-worked-example/example.py new file mode 100644 index 0000000..13d9d73 --- /dev/null +++ b/episodes/files/snakeviz-worked-example/example.py @@ -0,0 +1,36 @@ +import time + +""" +This is a synthetic program intended to produce a clear profile with cProfile/snakeviz +Method names, constructed from a hex digit and a number clearly denote their position in the hierarchy. +""" +def a_1(): + for i in range(3): + b_1() + time.sleep(1) + b_2() + + +def b_1(): + c_1() + c_2() + +def b_2(): + time.sleep(1) + +def c_1(): + time.sleep(0.5) + + +def c_2(): + time.sleep(0.3) + d_1() + +def d_1(): + time.sleep(0.1) + + + + +# Entry Point +a_1() \ No newline at end of file diff --git a/episodes/files/snakeviz-worked-example/out.prof b/episodes/files/snakeviz-worked-example/out.prof new file mode 100644 index 0000000000000000000000000000000000000000..78fb9f38e8dba4ff2382d51c017c4f4ed6606648 GIT binary patch literal 1116 zcmeyZ$^45ewIVUMASYF?pz@_G0|Ub?=9G9tP1cvpKz0!ekVrRj6?yl;=$~DB&#GOE z-g{oQuU^Sq#0ZpmDG64e9B-t_0#=Gcy@4iFy(m;Y(0nBIH~#LswI=kNUHVqxQ|WT7 zKM>~gfz>Ag-GgjChI+X9LQwTaK=*?jSi}z`(o>~ly_hOr+ofA7X&S$0`hYN>9jrbP zY(7XS4)rkeiv&SxK$ZaAk5C`SP#U){fZINuVX>&@y-Pw4)lmO})%@bH$<0qG%}KQb zdIFCoxFu{LOF%9|38bP%(T~qn1?sA!Z`{Wl~nLFSPfGUHbW`1G^qT0^=8B z-AkZ4hF|hFNu`-NCAyh;3c0Bz8Tly+V18y^v0iFLYBFjFVVDH6Sp;ZI5hxk`GO&Rf zp`MaioS2l8s;-cqrl205Q(RD#pQaZ8Bri;lB_>{yH*Cw zMCmXFEU|Ealyjmh|7Ia8!~x6`=`aRNIWI^#D1)FRE3UuG%N_!gcsh&$i%~=jO<4a~ zm5Uju1jZ<0MYmL5#+|+X)*JhD7y~76io`(bk#j)b+pP<}AA4Yz{>*Rw +""" + +import itertools +import math +import random +import sys + +def distance(point1, point2): + return math.sqrt((point2[0] - point1[0])**2 + (point2[1] - point1[1])**2) + +def total_distance(points, order): + total = 0 + for i in range(len(order) - 1): + total += distance(points[order[i]], points[order[i + 1]]) + return total + distance(points[order[-1]], points[order[0]]) + +def traveling_salesman_brute_force(points): + min_distance = float('inf') + min_path = None + for order in itertools.permutations(range(len(points))): + d = total_distance(points, order) + if d < min_distance: + min_distance = d + min_path = order + return min_path, min_distance + +# Argument parsing +if len(sys.argv) != 2: + print("Script expects 1 positive integer argument, %u found."%(len(sys.argv) - 1)) + sys.exit() +cities_len = int(sys.argv[1]) +if cities_len < 1: + print("Script expects 1 positive integer argument, %s converts < 1."%(sys.argv[1])) + sys.exit() +# Define the cities as (x, y) coordinates +random.seed(12) # Fixed random for consistency +cities = [(0,0)] +for i in range(cities_len): + cities.append((random.uniform(-1, 1), random.uniform(-1, 1))) + +# Find the shortest path +shortest_path, min_distance = traveling_salesman_brute_force(cities) +print("Cities:", cities_len) +print("Shortest Path:", shortest_path) +print("Shortest Distance:", min_distance) diff --git a/episodes/profiling-functions.md b/episodes/profiling-functions.md index d1d629b..b7766c8 100644 --- a/episodes/profiling-functions.md +++ b/episodes/profiling-functions.md @@ -6,12 +6,301 @@ exercises: 0 :::::::::::::::::::::::::::::::::::::: questions -- TODO +- When is function level profiling appropriate? +- How can `cProfile` and `snakeviz` be used to profile a Python program? +- How are the outputs from function level profiling interpreted? :::::::::::::::::::::::::::::::::::::::::::::::: ::::::::::::::::::::::::::::::::::::: objectives -- TODO +- execute a Python program via `cProfile` to collect profiling information about a Python program’s execution +- use `snakeviz` to visualise profiling information output by `cProfile` +- interpret `snakeviz` views, to identify the functions where time is being spent during a program’s execution -:::::::::::::::::::::::::::::::::::::::::::::::: \ No newline at end of file +:::::::::::::::::::::::::::::::::::::::::::::::: + +## Introduction + +Software is typically comprised of a hierarchy of function calls, both functions written by the developer and those used from the core language and third party packages. + + +Function-level profiling analyses where time is being spent with respect to functions. Typically function-level profiling will calculate the number of times each function is called and the total time spent executing each function, inclusive and exclusive of child function calls. + + +This allows functions that occupy a disproportionate amount of the total runtime to be quickly identified and investigated. + + +In this episode we will cover the usage of the function-level profiler `cProfile`, how it's output can be visualised with `snakeviz` and how the output can be interpreted. + +## cProfile + + +[`cProfile`](https://docs.python.org/3/library/profile.html#instant-user-s-manual) is a function-level profiler provided as part of the Python standard library. + + +It can be called directly within your Python code as an imported package, however it's easier to use it's script interface: + +```sh +python -m cProfile -o