您现在的位置是:首页 > 博客日记 > Python Python

python的threading多线程(python的简单入门)

2019-11-21 18:27:17 【Python】 人已围观

1、threading模块是Python里面常用的线程模块,多线程处理任务对于提升效率非常重要

例如没有使用多线程的程序执行

  1. #!/usr/bin/env
  2. import time, threading
  3. # 需要执行的方法
  4. def runFunction(params):
  5. # 接收传参
  6. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+": runFunction方法参数 "+str(params))
  7. time.sleep(5) # 休眠5秒模拟 数据处理时间(比如爬虫抓取页面时间)
  8. # main主执行方法
  9. if __name__ == "__main__":
  10. # 现在有10个任务需要执行
  11. for i in range(10):
  12. runFunction(i)
  13. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+":执行完成")

你会发现需要至少执行50秒

使用threading多线程控制以后 只需要最少5秒的时间处理事情

  1. #!/usr/bin/env
  2. import time, threading
  3. # 需要执行的方法
  4. def runFunction(params):
  5. # 接收传参
  6. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+": runFunction方法参数 "+str(params))
  7. # print('%s is running...' % threading.current_thread().getName()) # 返回线程名称
  8. # print("Pid is :%s" % threading.get_ident()) # 返回线程pid
  9. time.sleep(10) # 休眠10S方便统计存活线程数量
  10. # main主执行方法
  11. if __name__ == "__main__":
  12. # 队列lists
  13. lists = []
  14. # 现在有10个任务需要执行
  15. for i in range(10):
  16. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+": 压入队列:"+str(i))
  17. # 压入队列
  18. data = threading.Thread(target=runFunction, args=(i,)) # 逗号不能省!
  19. lists.append(data)
  20. print("开始执行")
  21. # 执行队列
  22. for i in lists:
  23. i.start()
  24. # 释放任务
  25. for i in lists:
  26. i.join()
  27. print(time.strftime('%Y-%m-%d %H:%M:%S',time.localtime(time.time()))+":执行完成")

join()方法:主线程A中,创建了子线程B,并且在主线程A中调用了B.join(),那么,主线程A会在调用的地方等待,直到子线程B完成操作后,



关注TinyMeng博客,更多精彩分享,敬请期待!
 

很赞哦! ()