Bird
Raised Fist0
Data Analysis Pythondata~10 mins

Profiling with line_profiler in Data Analysis Python - Interactive Code Practice

Choose your learning style10 modes available
Practice - 5 Tasks
Answer the questions below
1fill in blank
easy

Complete the code to import the line_profiler module.

Data Analysis Python
import [1]
Drag options to blanks, or click blank then click option'
AcProfile
Bline_profiler
Ctimeit
Dprofile
Attempts:
3 left
💡 Hint
Common Mistakes
Importing 'cProfile' instead of 'line_profiler'.
Using 'profile' which is a decorator but not the module name.
2fill in blank
medium

Complete the code to create a LineProfiler object.

Data Analysis Python
profiler = [1]()
Drag options to blanks, or click blank then click option'
ALineProfiler
BProfile
CcProfile
DTimer
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'Profile' which is from a different module.
Using 'Timer' which is unrelated.
3fill in blank
hard

Fix the error in the code to add a function to the profiler.

Data Analysis Python
profiler.[1](my_function)
Drag options to blanks, or click blank then click option'
Aadd_function
Brun
Cadd_function_to_profile
Dadd_func
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'run' which executes code but does not add functions.
Using 'add_func' which is not a valid method.
4fill in blank
hard

Fill both blanks to run the profiler on a function and print the stats.

Data Analysis Python
profiler.[1](my_function)
profiler.[2]()
Drag options to blanks, or click blank then click option'
Arun
Bprint_stats
Cstart
Dstop
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'start' and 'stop' which are not methods of LineProfiler.
Using 'run' twice or 'print_stats' first.
5fill in blank
hard

Fill all three blanks to decorate a function, run it, and print profiling results.

Data Analysis Python
@profiler.[1]
def my_function():
    total = 0
    for i in range(1000):
        total += i
    return total

my_function()
profiler.[2](my_function)
profiler.[3]()
Drag options to blanks, or click blank then click option'
Aprofile
Badd_function
Cprint_stats
Drun
Attempts:
3 left
💡 Hint
Common Mistakes
Using 'run' as decorator instead of 'profile'.
Not adding the function before printing stats.

Practice

(1/5)
1. What is the main purpose of using line_profiler in Python data analysis?
easy
A. To measure the time each line of a function takes to execute
B. To visualize data distributions with graphs
C. To clean missing data automatically
D. To convert data types in a DataFrame

Solution

  1. Step 1: Understand profiling purpose

    line_profiler is designed to measure execution time per line in functions.
  2. Step 2: Compare options to profiling goal

    Options A, B, and D relate to data cleaning, visualization, and type conversion, not profiling.
  3. Final Answer:

    To measure the time each line of a function takes to execute -> Option A
  4. Quick Check:

    Profiling = measuring line execution time [OK]
Hint: Profiling finds slow lines by timing code line-by-line [OK]
Common Mistakes:
  • Confusing profiling with data visualization
  • Thinking profiling cleans or transforms data
  • Assuming profiling measures overall script time only
2. Which of the following is the correct way to create a LineProfiler object and add a function my_func for profiling?
easy
A. profiler = LineProfiler(my_func); profiler.run()
B. profiler = LineProfiler(); profiler.add_function('my_func')
C. profiler = LineProfiler(); profiler.add(my_func)
D. profiler = LineProfiler(); profiler.add_function(my_func)

Solution

  1. Step 1: Recall LineProfiler usage

    The correct method to add a function is add_function() with the function object.
  2. Step 2: Check each option

    profiler = LineProfiler(); profiler.add_function(my_func) uses add_function(my_func) correctly. profiler = LineProfiler(my_func); profiler.run() wrongly passes function to constructor. profiler = LineProfiler(); profiler.add(my_func) uses non-existent add(). profiler = LineProfiler(); profiler.add_function('my_func') passes function name as string, which is incorrect.
  3. Final Answer:

    profiler = LineProfiler(); profiler.add_function(my_func) -> Option D
  4. Quick Check:

    Add function with add_function(func) [OK]
Hint: Use add_function(func) with function object, not string [OK]
Common Mistakes:
  • Passing function name as string instead of function object
  • Using wrong method like add() instead of add_function()
  • Passing function to LineProfiler constructor
3. Given the code below, what will be printed by profiler.print_stats()?
from line_profiler import LineProfiler

def slow_func():
    total = 0
    for i in range(3):
        total += i
    return total

profiler = LineProfiler()
profiler.add_function(slow_func)
profiler.enable()
slow_func()
profiler.disable()
profiler.print_stats()
medium
A. No output because profiler.enable() was called before add_function()
B. SyntaxError because LineProfiler requires run() method
C. Detailed timing per line of slow_func showing time spent on the loop lines
D. Only total execution time without line-by-line details

Solution

  1. Step 1: Understand profiling flow

    Profiler is created, function added, enabled, function called, then disabled and stats printed.
  2. Step 2: Analyze output of print_stats()

    print_stats() shows detailed line-by-line timing for added functions, here slow_func, including loop lines.
  3. Final Answer:

    Detailed timing per line of slow_func showing time spent on the loop lines -> Option C
  4. Quick Check:

    print_stats() = detailed line timing [OK]
Hint: print_stats() shows line-by-line timing for added functions [OK]
Common Mistakes:
  • Thinking print_stats() shows only total time
  • Believing enable() must be after add_function() to work
  • Confusing run() method requirement
4. Identify the error in the following code snippet that uses line_profiler:
from line_profiler import LineProfiler

def compute():
    s = 0
    for i in range(5):
        s += i
    return s

profiler = LineProfiler()
profiler.add_function('compute')
profiler.enable()
compute()
profiler.disable()
profiler.print_stats()
medium
A. Passing function name as string to add_function instead of function object
B. Missing call to profiler.run() to execute the function
C. Not importing line_profiler correctly
D. For loop range is invalid syntax

Solution

  1. Step 1: Check add_function argument

    add_function requires the function object, not its name as a string.
  2. Step 2: Identify error cause

    Passing 'compute' as string causes profiler not to track the function properly.
  3. Final Answer:

    Passing function name as string to add_function instead of function object -> Option A
  4. Quick Check:

    add_function(func) needs function object [OK]
Hint: Always pass function object, not string, to add_function() [OK]
Common Mistakes:
  • Passing function name as string
  • Thinking profiler.run() is mandatory
  • Assuming import error without checking code
5. You want to profile two functions func_a and func_b in your data analysis script. You also want to compare which function is slower line-by-line. Which of the following code snippets correctly profiles both functions and prints their stats separately?
hard
A. profiler = LineProfiler() profiler.add_function(func_a) profiler.add_function(func_b) profiler.enable() func_a() func_b() profiler.disable() profiler.print_stats()
B. profiler_a = LineProfiler() profiler_a.add_function(func_a) profiler_b = LineProfiler() profiler_b.add_function(func_b) profiler_a.enable() func_a() profiler_a.disable() profiler_b.enable() func_b() profiler_b.disable() profiler_a.print_stats() profiler_b.print_stats()
C. profiler = LineProfiler(func_a, func_b) profiler.run() profiler.print_stats()
D. profiler = LineProfiler() profiler.add_function('func_a') profiler.add_function('func_b') profiler.enable() func_a() func_b() profiler.disable() profiler.print_stats()

Solution

  1. Step 1: Understand profiling multiple functions separately

    To compare functions separately, create separate LineProfiler instances for each.
  2. Step 2: Analyze each option

    profiler = LineProfiler() profiler.add_function(func_a) profiler.add_function(func_b) profiler.enable() func_a() func_b() profiler.disable() profiler.print_stats() profiles both with one profiler but prints combined stats, not separate. profiler_a = LineProfiler() profiler_a.add_function(func_a) profiler_b = LineProfiler() profiler_b.add_function(func_b) profiler_a.enable() func_a() profiler_a.disable() profiler_b.enable() func_b() profiler_b.disable() profiler_a.print_stats() profiler_b.print_stats() profiles separately with two profilers and prints stats separately. profiler = LineProfiler(func_a, func_b) profiler.run() profiler.print_stats() wrongly passes functions to constructor and calls run() without arguments. profiler = LineProfiler() profiler.add_function('func_a') profiler.add_function('func_b') profiler.enable() func_a() func_b() profiler.disable() profiler.print_stats() passes function names as strings, which is incorrect.
  3. Final Answer:

    profiler_a = LineProfiler() profiler_a.add_function(func_a) profiler_b = LineProfiler() profiler_b.add_function(func_b) profiler_a.enable() func_a() profiler_a.disable() profiler_b.enable() func_b() profiler_b.disable() profiler_a.print_stats() profiler_b.print_stats() -> Option B
  4. Quick Check:

    Separate profilers for separate stats [OK]
Hint: Use separate LineProfiler instances to profile functions separately [OK]
Common Mistakes:
  • Passing function names as strings
  • Using one profiler for separate stats
  • Misusing LineProfiler constructor arguments
Recommended

Ready to prove it?

Pass the test and this pattern moves unknown strong while earning +1 Grip toward your certificate.

10 questions~5 mineasy hard