-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathgenerator.py
More file actions
92 lines (65 loc) · 1.59 KB
/
generator.py
File metadata and controls
92 lines (65 loc) · 1.59 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
'''
之前有同学提到说,想知道更多关于Generator的东西。
那么这一期就给大家讲一讲Generator是什么?为什么要使用Generator?
'''
def example1():
def generator_function():
yield 1 # 中文里 有产出 或者 让步
yield 2
return 3
generatorObject = generator_function()
print(next(generatorObject))
print(next(generatorObject))
try:
print(next(generatorObject))
except:
print('We have reached the end of iteration')
def example2():
def generator_function(number):
while number > 0:
yield number
number -= 1
for number in generator_function(10):
print(number)
def example3():
def fun():
return 'fun'
def generator_function(number):
if number > 0:
yield number
print(fun())
yield from generator_function(number-1)
for number in generator_function(10):
print(number)
# example1()
# example2()
# example3()
'''
Generator
Async Operation -> I/O Bound
-> Memory Efficiency
'''
import socket
import time
def get(path):
s = socket.socket()
s.connect(('localhost', 3000))
request = 'GET %s HTTP/1.0\r\n\r\n' % path
s.send(request.encode())
chunks = []
while True:
chunk = s.recv(1000) # 1000 bytes
if chunk:
chunks.append(chunk)
else:
body = (b''.join(chunks)).decode()
print('--------------------------------------')
print(body)
print('--------------------------------------\n\n')
return
start = time.time()
get('/slow')
get('/super-slow')
get('/slower')
print('%.1f sec' % (time.time() - start))
#