1 '''
2 创建线程,也可以动态确定线程数
3 '''
4 # encoding: utf-8
5
6
7 import threading
8 import time
9 import random
10
11
12 def print_time(thread_name, step):
13 # python的time.ctime()函数把一个时间戳(按秒计算的浮点数)转化为time.asctime()的形式。
14 # 如果参数未给或者为None的时候,将会默认time.time()为参数。它的作用相当于asctime(localtime(secs))。
15 print(thread_name, ':', time.ctime(time.time()))
16 time.sleep(step)
17
18
19 class MyThread(threading.Thread):
20 # 子类的构造函数必须先调用其父类的构造函数,重写run()方法。
21 def __init__(self, thid=None, thname=None, step=0.1):
22 threading.Thread.__init__(self)
23 self.step = step
24 self.thid = thid
25 self.thname = thname
26
27 def run(self):
28 for i in range(3):
29 print_time(self.thname, self.step)
30 time.sleep(self.step)
31 print('%s结束' % self.thname)
32
33 print('主线程开始!')
34
35
36 threads = []
37 for i in range(10):
38 # 创建出来的线程后面还需要使用,所以使用变量th保存起来,保存到循环之前事先创建好的列表里
39 th = MyThread(thname='线程%d' % i, step=round(random.uniform(0, 1), 2))
40 threads.append(th)
41 th.start()
42
43 for th in threads:
44 th.join()
45
46 print('主线程结束!')