Day 17 17.4 多进程实现

多进程实现

  • 由于GIL的存在,python中的多线程其实并不是真正的多线程,如果想要充分地使用多核CPU的资源,在python中大部分情况需要使用多进程。

  • multiprocessing包是Python中的多进程管理包。

    • 与threading.Thread类似,它可以利用multiprocessing.Process对象来创建一个进程。
    • 该进程可以运行在Python程序内部编写的函数。
    • 该Process对象与Thread对象的用法相同,也有start(), run(), join()的方法。
    • 此外multiprocessing包中也有Lock/Event/Semaphore/Condition类 (这些对象可以像多线程那样,通过参数传递给各个进程),用以同步进程,其用法与threading包中的同名类一致。
    • 所以,multiprocessing的很大一部份与threading使用同一套API,只不过换到了多进程的情境。

python的进程调用:

import multiprocessing
import time


def foo():
    print("foo start...")
    time.sleep(5)
    print("foo end...")


def bar():
    print("bar start...")
    time.sleep(3)
    print("bar end...")


if __name__ == '__main__':
  
    start = time.time()
    t1 = multiprocessing.Process(target=foo, args=())
    t1.start()
    t2 = multiprocessing.Process(target=bar, args=())
    t2.start()

    # 等待所有子线程结束
    t1.join()  # 等待子线程t1
    t2.join()  # 等待子线程t2
    end = time.time()
    print(end - start)
posted @ 2023-03-19 09:19  Chimengmeng  阅读(15)  评论(0)    收藏  举报