Skip to content

Commit e328996

Browse files
committed
added timer context example
1 parent 8bb125d commit e328996

4 files changed

Lines changed: 42 additions & 6 deletions

File tree

Examples/Session10/context_managers.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,8 +18,12 @@ def __enter__(self):
1818

1919
def __exit__(self, exc_type, exc_val, exc_tb):
2020
print('__exit__({}, {}, {})'.format(exc_type, exc_val, exc_tb))
21-
return self.handle_error
21+
if exc_type == ZeroDivisionError:
22+
return True
23+
else:
24+
return False
2225

26+
# return self.handle_error
2327

2428
@contextmanager
2529
def context(boolean):

Examples/Session10/decorators.py

Lines changed: 8 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -9,9 +9,9 @@ def new_function(*args, **kwargs):
99

1010

1111
def add(a, b):
12-
# print("Function 'add' called with args: {}, {}".format(a, b) )
12+
print("Function 'add' called with args: {}, {}".format(a, b) )
1313
result = a + b
14-
# print("\tResult --> {}".format(result))
14+
print("\tResult --> {}".format(result))
1515
return result
1616

1717

@@ -49,10 +49,14 @@ def __call__(self, *args): # runs when memoize instance is called
4949
return self.memoized[args]
5050

5151

52-
# @Memoize
52+
@Memoize
5353
def sum2x(n):
5454
return sum(2 * i for i in range(n))
55-
sum2x = Memoize(sum2x)
55+
# sum2x = Memoize(sum2x)
56+
57+
@Memoize
58+
def prod2(a,b):
59+
return sum( a * b**2 for a,b in zip(range(a), range(b)))
5660

5761
import time
5862

Examples/Session10/test_p_wrapper.py

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
test code for the p_wrapper assignment
55
"""
66

7-
from p_wrapper import p_wrapper, tag_wrapper
7+
from p_wrapper import p_wrapper #, tag_wrapper
88

99

1010
def test_p_wrapper():
@@ -14,6 +14,14 @@ def return_a_string(string):
1414

1515
assert return_a_string('this is a string') == '<p> this is a string </p>'
1616

17+
def test_with_args():
18+
@p_wrapper
19+
def f_string(a, b, this=45 ):
20+
return "the numbers are: {}, {}, {}".format(a,b,this)
21+
22+
assert f_string(2, 3, this=54) == "<p> the numbers are: 2, 3, 54 </p>"
23+
24+
1725
#Extra credit:
1826

1927
def test_tag_wrapper():
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
#!/usr/bin/env python3
2+
3+
"""
4+
Timer context manager
5+
"""
6+
import time
7+
8+
9+
class Timer:
10+
def __init__(self, file_like):
11+
self.file_like = file_like
12+
13+
def __enter__(self):
14+
self.start = time.clock()
15+
16+
def __exit__(self, *args):
17+
elapsed = time.clock() - self.start
18+
msg = "Elapsed time: {} seconds".format(elapsed)
19+
self.file_like.write(msg)
20+
return False

0 commit comments

Comments
 (0)