多线程
1. 多线程
-
引入: import threading import Thread
-
使用1:
def func(name): print(name) t1 = Thread(target=func要调用的函数,args=('123',)参数必须以元素形式传入) t1.start() -
使用2: 面向对象
2. 线程池
- 引入: from concurrent.futures import ThreadPoolExecutor
- 使用
def func(name): return name def callback(res): print(res.result()) with ThreadPoolExecutor(10) as t: t.submit(func,"参数1").add_done_callback(callback) result = t.map(func,["参数1","参数1"],[1,2])- add_done_callback:是func执行完后立即回调,res.result()是func的返回值
- t.map是批量调用func方法,多个参数以数组一一对应方式传入,返回值直接用result接收,result是个迭代器
多进程
- 引入: from multiprocessing import Process,Queue
- 跟多线程方法一样
- 进程池跟线程池方法一样
- 这个Queue可以在多个进程之间进行通信,底层是socket,q=Queue(),q.put(xx),q.get(),并且如果要用队列,必须在初始化Process(target=func,args=(q,))的时候将q传参进去