''' 多个子线程执行相同代码,先开的子线程不一定先执行完毕,如果子线程内有IO操作/time.sleep等 IO操作/time.sleep会导致子线程切出到其他线程(包括主线程) 如果没有引起线程切换,则顺序执行完毕 进程/线程切换原则 1 时间片 2 遇到io操作切换 3 优先级切换 ''' import time,threading l=[] class MyThread(threading.Thread): def __init__(self): threading.Thread.__init__(self) def run(self): global l #可将此句取消注释对比运行结果 # time.sleep(0.0000000000001) #将当前线程名添加到列表l l.append(self.getName()) for i in range(50): t=MyThread() t.start() l.append('主线程') #不确定join是否干扰子线程运行,用sleep保证子线程运行完毕 time.sleep(2) print(l)