import threading import time def lajifenlei(): time.sleep(2) print(threading.current_thread().name+'haha haha') #打印线程名称及字符串 #非多线程方式运行,运行时间为20秒多一些 start_time=time.time() for i in range(10): lajifenlei() print(time.time()-start_time) #多线程统计时间却是零点几,究其原因是由于主线程没有等子线程运行结束导致,即每个py文件运行都有一个主线程 #我们声明的是子线程 s_time=time.time() for i in range(10): th=threading.Thread(target=lajifenlei) #声明线程,注意写方法名,不需要带括号 th.start() #启动线程 print(time.time()-s_time) #第一种方式等待子线程 s_time2=time.time() threads=[] for i in range(10): th2=threading.Thread(target=lajifenlei) #声明线程,注意写方法名,不需要带括号 th2.start() #启动线程 threads.append(th2) #把每个线程对象加入list for t in threads: t.join() #等待子线程 print(time.time()-s_time2) #第二种方法,主线程等待子线程 s_time3=time.time() for j in range(10): th3=threading.Thread(target=lajifenlei) #声明线程,注意写方法名,不需要带括号 th3.start() #启动线程 while threading.active_count()!=1: #当活跃的线程仅剩1的时候,结束等待,说明所有的子线程均已运行完成,只剩最后一个线程在运行 pass print(time.time()-s_time3)
python_多线程
猜你喜欢
转载自www.cnblogs.com/xiaokuangnvhai/p/11261311.html
今日推荐
周排行