Skip to content

Commit da934e1

Browse files
committed
Python 多线程之 threading 模块
1 parent e6a1481 commit da934e1

File tree

5 files changed

+92
-0
lines changed

5 files changed

+92
-0
lines changed

day-023/__init__.py

Whitespace-only changes.

day-023/daemon.py

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
import threading
2+
def work(num):
3+
for i in range(num):
4+
print(threading.current_thread().name + " " + str(i))
5+
t = threading.Thread(target=work, args=(10,), name='守护线程')
6+
#t.daemon = True
7+
t.start()
8+
for i in range(10):
9+
pass

day-023/local.py

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
import threading
2+
import time
3+
4+
# 不使用 threading.local
5+
num = 0
6+
def work():
7+
global num
8+
for i in range(10):
9+
num += 1
10+
print(threading.current_thread().getName(), num)
11+
time.sleep(0.0001)
12+
for i in range(5):
13+
threading.Thread(target=work).start()
14+
15+
# 使用 threading.local
16+
num = threading.local()
17+
def work():
18+
num.x = 0
19+
for i in range(10):
20+
num.x += 1
21+
print(threading.current_thread().getName(), num.x)
22+
time.sleep(0.0001)
23+
for i in range(5):
24+
threading.Thread(target=work).start()

day-023/new.py

Lines changed: 37 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,37 @@
1+
#创建线程-构造器方式
2+
import time
3+
import threading
4+
def work(num):
5+
print('线程名称:',threading.current_thread().getName(),'参数:',num,'开始时间:',time.strftime('%Y-%m-%d %H:%M:%S'))
6+
if __name__ == '__main__':
7+
print('主线程开始时间:',time.strftime('%Y-%m-%d %H:%M:%S'))
8+
t1 = threading.Thread(target=work,args=(3,))
9+
t2 = threading.Thread(target=work,args=(2,))
10+
t3 = threading.Thread(target=work,args=(1,))
11+
t1.start()
12+
t2.start()
13+
t3.start()
14+
t1.join()
15+
t2.join()
16+
t3.join()
17+
print('主线程结束时间:', time.strftime('%Y-%m-%d %H:%M:%S'))
18+
19+
#创建线程-继承方式
20+
class MyThread(threading.Thread):
21+
def __init__(self,num):
22+
super().__init__()
23+
self.num = num
24+
def run(self):
25+
print('线程名称:', threading.current_thread().getName(), '参数:', self.num, '开始时间:', time.strftime('%Y-%m-%d %H:%M:%S'))
26+
if __name__ == '__main__':
27+
print('主线程开始时间:',time.strftime('%Y-%m-%d %H:%M:%S'))
28+
t1 = MyThread(3)
29+
t2 = MyThread(2)
30+
t3 = MyThread(1)
31+
t1.start()
32+
t2.start()
33+
t3.start()
34+
t1.join()
35+
t2.join()
36+
t3.join()
37+
print('主线程结束时间:', time.strftime('%Y-%m-%d %H:%M:%S'))

day-023/timer.py

Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
from threading import Timer
2+
import time
3+
#定时器-单次执行
4+
# def work():
5+
# print("Hello Python")
6+
# # 5 秒后执行 work 方法
7+
# t = Timer(5, work)
8+
# t.start()
9+
10+
#定时器-重复执行
11+
count = 0
12+
def work():
13+
print('当前时间:', time.strftime('%Y-%m-%d %H:%M:%S'))
14+
global t, count
15+
count += 1
16+
# 如果 count 小于 5,开始下一次调度
17+
if count < 5:
18+
t = Timer(1, work)
19+
t.start()
20+
# 指定 2 秒后执行 work 方法
21+
t = Timer(2, work)
22+
t.start()

0 commit comments

Comments
 (0)