多进程实现
-
由于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)
标签:__,17,print,Day,start,17.4,time,进程,multiprocessing
From: https://www.cnblogs.com/dream-ze/p/17232466.html