defrun(num):
print('task ', num)
time.sleep(2)
print('执行完? %s', num)
ta = time.time()
# tobjs = []for i in range(20):
t = threading.Thread(target=run, args=(i,))
t.start()
print( time.time() - ta)
等待子线程执行完成,实际上这就成为了串行执行
tobjs = []
for i in range(4):
t = threading.Thread(target=run, args=('t_%s' %i,))
t.setDaemon(True) #把当前线程设置为守护线程
t.start()
tobjs.append(t)
for t in tobjs:
t.join()
循环方式多线程
import threading
import time, os
defrun(n):
print('task ', n, threading.current_thread())
time.sleep(2)
a = time.time()
tobjs = []
for i in range(4):
t = threading.Thread(target=run, args=('t_%s' %i,))
# 把当前线程设置为守护线程 一定要在start之前
t.setDaemon(True)
t.start()
# tobjs.append(t)# for t in tobjs:# t.join()# 可替换joinwhile threading.active_count() != 1:
passelse:
print('----all threads done----')
print('use_time: ', time.time() - a, threading.current_thread(),
threading.active_count()
)