run启动多进程
import os from multiprocessing import Process import time def foo(): print("{}--->pid---->{}".format("foo", os.getpid())) print(123) time.sleep(4) print("end123") def bar(): print("{}--->pid---->{}".format("bar", os.getpid())) print(456) time.sleep(3) print("end456") if __name__ == '__main__': p1 = Process(target=foo) p2 = Process(target=bar) p1.run() p2.run() print("main-------")
运行结果如图:
start启动多进程
import os from multiprocessing import Process import time def foo(): print("{}--->pid---->{}".format("foo", os.getpid())) print(123) time.sleep(4) print("end123") def bar(): print("{}--->pid---->{}".format("bar", os.getpid())) print(456) time.sleep(3) print("end456") if __name__ == '__main__': p1 = Process(target=foo) p2 = Process(target=bar) p1.start() p2.start() print("main-------")
运行结果如下:
总结
在多进程下run方法启动相当于直接调用函数,并没有真正意义上使用多进程,这一点我们可以通过pid看的出来。而start启动却是真正意义上调用了多进程,同样我们可以通过pid看的出来
注意
import os from multiprocessing import Process import time def foo(): print("{}--->pid---->{}".format("foo", os.getpid())) print(123) time.sleep(4) print("end123") def bar(): print("{}--->pid---->{}".format("bar", os.getpid())) print(456) time.sleep(3) print("end456") p1 = Process(target=foo) p2 = Process(target=bar) p1.start() p2.start() print("main-------")
上面的代码运行就会出现异常,这里的原因是python多进程只能在main函数下面调用