Python--多线程 threading

匿名 (未验证) 提交于 2019-12-02 22:56:40
  • 简单使用
import threading  def thread_job():     print('This is a thread of %s' % threading.current_thread())   def main():     thread = threading.Thread(target=thread_job,)   # 定义线程      thread.start()  # 让线程开始工作     thread.join()
  • 可以使用的API
当前活跃线程数 threading.active_count()  查看所有线程信息 threading.enumerate()  查看当前运行的线程 threading.current_thread()
  • join功能

thread.join() 表示 当前主线程要等待所有带 join的子线程结束以后才能接着执行。

  • 用队列管理多线程返回结果的例子
  import threading import time  from queue import Queue  def job(l,q):     for i in range (len(l)):         l[i] = l[i]**2     q.put(l)  def multithreading():     q =Queue()     threads = []     data = [[1,2,3],[3,4,5],[4,4,4],[5,5,5]]     for i in range(4):         t = threading.Thread(target=job,args=(data[i],q))         t.start()         threads.append(t)     for thread in threads:         thread.join()     results = []     for _ in range(4):         results.append(q.get())     print(results)  if __name___=='__main__':     multithreading()
  • GIL 全局解释器锁
  • lock
global A,lock   lock  原理和其它锁都一样  在每个线程执行运算修改共享内存之前,执行lock.acquire()将共享内存上锁, 确保当前线程执行时,内存不会被其他线程访问,执行运算完毕后,使用lock.release()将锁打开, 保证其他的线程可以使用该共享内存。

莫烦Python

转载请标明出处:Python--多线程 threading
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!