1. import threading
  2. import time
  3. def t_job():
  4. print('T1 start')
  5. for i in range(10):
  6. time.sleep(0.1)
  7. print('T1 stop')
  8. def t_job2():
  9. print('T2 stop')
  10. def main():
  11. # 创建一个线程 , 并给与任务
  12. addThread = threading.Thread(target = t_job, name = 'T1')
  13. # 开始一个线程
  14. addThread.start()
  15. # 等待执行完成
  16. addThread.join()
  17. thread2 = threading.Thread(target = t_job2, name = 'T2')
  18. thread2.start()
  19. thread2.join()
  20. print('all done\n')
  21. # # 查看当前线程数量
  22. # print(threading.active_count())
  23. # # 查看开启的所有线程
  24. # print(threading.enumerate())
  25. # # 正在运行的线程
  26. # print(threading.current_thread())
  27. if __name__ == '__main__':
  28. main()

多线程执行任务

  1. import threading
  2. import time
  3. from queue import Queue
  4. def job(data, q):
  5. for i in range(len(data)):
  6. data[i] = data[i] ** 2
  7. # 将每次的运算结果假如到队列
  8. q.put(data)
  9. def multi():
  10. q = Queue()
  11. # 保存每个线程的实例
  12. threads = []
  13. data = [
  14. [1, 2, 3],
  15. [2, 2, 3],
  16. [1, 2, 1],
  17. ]
  18. # 启动所有线程
  19. for i in range(len(data)):
  20. # 将不同的数据列表分别传入不同线程
  21. thread = threading.Thread(target = job, args = (data[i], q))
  22. thread.start()
  23. # 添加到所有线程
  24. threads.append(thread)
  25. # 加载到主线程
  26. for thread in threads:
  27. thread.join()
  28. # 保存结果
  29. results = []
  30. for _ in range(len(data)):
  31. # 按照队列取数据
  32. results.append(q.get())
  33. print(results)
  34. if __name__ == '__main__':
  35. multi()