- 简单使用
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--多线程 threading
文章来源: Python--多线程 threading