from multiprocessing import Process
import os
print(os.getpid())
def run_proc(name):
print('Run child process %s (%s)...' % (name, os.getpid()))
if __name__=='__main__':
p = Process(target=run_proc, args=('test',))
print(os.getpid())
p.start()
输出结果:
8488
8488
8292
Run child process test (8292)...
为什么加了第三行的语句后会多输出一行子进程pid(8292)
old answer
因为
Process
在linux
下是通过fork
形式实现的, 代码都被复制到子进程中, 所以在Process(target=run_proc, args=('test',))
之后的代码, 都会顺序依次执行..new answer
你这个代码应该是在
Windows
下执行的, 因为Windows
和unix/linux
实现多进程的方式不相同,Windows
会在创建新进程是, 再载入一次此模块:unix/linux
则无此问题