python 中的 fork
讲到 python中 的 fork 主要就是和进程有关了,当前进程执行 fork 以后,系统就会将当前进程复制一份,从而创建出一个子进程,就好像影分身一样。fork 函数会返回两个值,父进程(当前进程)拿到子进程 id 表示自己是本体或者长辈进程,而子进程拿到 0 表示自己是孩子进程。上例子:

通过 getpid 可以拿到当前进程 id ,getppid 可以拿到当前进程的父进程 id。
通过结果可以发现:
1.当前进程 62918 执行 fork 以后,就变成了父进程(62918),而父进程拿到了子进程的进程 id,也就是 pid 为 62919 (最后一行打印的子进程 id 说明 pid=62919 就是子进程 id 信息)。子进程拿到的返回值永远是 0。
2.子进程和父进程是两个独立的任务独立进行的。可以看到打印 pid 信息的时候先返回其中一个 pid 信息接着就去执行 if...else 了,因为这是在同一个进程中的动作。在进行多线程编程的时候,我们要将子进程和父进程看成两个独立的任务独立的进行,而不是单进程那样的顺序执行(打印两个 pid 后再执行 if...else),这个思维视角要转变过来,会很有利于对多进程执行动作的理解。
3.先有父进程再有子进程。可以看到首先打印 pid=62919(子进程 id),说明这是个父进程在执行,然后接着执行父进程之后的动作(打印 "我是父进程...")。父进程完了才去执行子进程的动作(打印 pid=0)
本文来自互联网用户投稿,文章观点仅代表作者本人,不代表本站立场,不承担相关法律责任。如若转载,请注明出处。 如若内容造成侵权/违法违规/事实不符,请点击【内容举报】进行投诉反馈!
