threading 例子
threading 模块例子
1. join 的作用
等待线程运行结束
不加 join()
import threading
import time
def get_excute_time(fun):
def wrapper(*args):
start = time.time()
fun(*args)
end = time.time()
print("spend %.2fs"%(end - start))
return wrapper
def spent(second):
print("sleep %s"%second)
time.sleep(second)
print("done %s"%second)
def main():
threads = []
for i in range(1,5):
t = threading.Thread(target=spent,args=(i,))
threads.append(t)
t.start()
# for i in threads:
# i.join()
if __name__ == "__main__":
start = time.time()
main()
end = time.time()
print("spend %ss"%(end - start))
输出:
$ python thread_test.py
sleep 1
sleep 2
sleep 3
sleep 4
spend 0.004759550094604492s
done 1
done 2
done 3
done 4
加上 join()
import threading
import time
def get_excute_time(fun):
def wrapper(*args):
start = time.time()
fun(*args)
end = time.time()
print("spend %.2fs"%(end - start))
return wrapper
def spent(second):
print("sleep %s"%second)
time.sleep(second)
print("done %s"%second)
def main():
threads = []
for i in range(1,5):
t = threading.Thread(target=spent,args=(i,))
threads.append(t)
t.start()
for i in threads:
i.join()
if __name__ == "__main__":
start = time.time()
main()
end = time.time()
print("spend %ss"%(end - start))
输出:
$ python thread_test.py
sleep 1
sleep 2
sleep 3
sleep 4
done 1
done 2
done 3
done 4
spend 4.017388582229614s