Skip to content

Commit 25db319

Browse files
committed
add
1 parent c1cc3b2 commit 25db319

File tree

4 files changed

+97
-0
lines changed

4 files changed

+97
-0
lines changed
Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
import socket
2+
3+
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
from contextlib import contextmanager
2+
import time
3+
4+
@contextmanager
5+
def timer(func):
6+
try:
7+
start = time.time()
8+
yield func()
9+
finally:
10+
end = time.time()
11+
print(end-start)
12+
13+
14+
def func():
15+
for i in range(9999999):
16+
pass
17+
time.sleep(1)
18+
19+
with timer(func) as timer:
20+
pass

Python基础代码/信号量.py

Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
import threading
2+
import time
3+
4+
5+
class HtmlSppier(threading.Thread):
6+
def __init__(self, url, sem):
7+
super().__init__()
8+
self.sem = sem
9+
self.url = url
10+
11+
def run(self):
12+
time.sleep(2)
13+
print('download html success')
14+
self.sem.release()
15+
16+
class UrlProducer(threading.Thread):
17+
def __init__(self,sem):
18+
super().__init__()
19+
self.sem = sem
20+
21+
22+
def run(self):
23+
for i in range(20):
24+
self.sem.acquire()
25+
html_thread = HtmlSppier(f'http://www.qq.com/pn={i}',self.sem)
26+
html_thread.start()
27+
28+
29+
if __name__ == '__main__':
30+
sem = threading.Semaphore(3)
31+
url_produce = UrlProducer(sem)
32+
url_produce.start()

Python基础代码/多线程通信.py

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
from threading import Thread, Condition
2+
3+
4+
class T1(Thread):
5+
def __init__(self, con):
6+
super().__init__()
7+
self.con = con
8+
9+
def run(self):
10+
with self.con:
11+
print(1)
12+
self.con.notify()
13+
self.con.wait()
14+
print(3)
15+
self.con.notify()
16+
self.con.wait()
17+
18+
19+
class T2(Thread):
20+
def __init__(self, con):
21+
super().__init__()
22+
self.con = con
23+
24+
def run(self):
25+
with self.con:
26+
self.con.wait()
27+
print(2)
28+
self.con.notify()
29+
self.con.wait()
30+
print(4)
31+
self.con.notify()
32+
33+
34+
35+
36+
if __name__ == '__main__':
37+
con = Condition()
38+
thread1 = T1(con)
39+
thread2 = T2(con)
40+
41+
thread2.start()
42+
thread1.start()

0 commit comments

Comments
 (0)