Python - 05 - 多线程

98 阅读1分钟

多线程

1. 多线程
  • 引入: import threading import Thread

  • 使用1:

    def func(name):
        print(name)
        
    t1 = Thread(target=func要调用的函数,args=('123',)参数必须以元素形式传入)
    t1.start()
    
  • 使用2: 面向对象 image.png

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传参进去