multiprocess在不同的操作系统上创建子进程的方法是不一样的,表现形式也不一样。linux上用的是fork, mac/windows上用的是spawn。
示例
1.用fork创建子进程
import multiprocessing as mp
def child_process():
print('Hi! My name is', __name__)
print('Hi! My name is', __name__)
if __name__ == '__main__':
mp.set_start_method('fork')
mp.Process(target=child_process, name="child process").start()
运行结果:
Hi! My name is __main__
Hi! My name is __main__
2.用spawn
import multiprocessing as mp
def child_process():
print('Hi! My name is', __name__)
print('Hi! My name is', __name__)
if __name__ == '__main__':
# mp.set_start_method('fork')
mp.Process(target=child_process, name="child process").start()
运行结果:
Hi! My name is __main__
Hi! My name is __mp_main__
Hi! My name is __mp_main__
spawn启动子进程的时候,会先运行一下父进程的内容,在运行target函数