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

python 中的 fork

通过 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)

相关文章:

  • 2022-12-23
  • 2021-09-23
  • 2021-06-12
  • 2021-05-30
  • 2022-12-23
猜你喜欢
  • 2021-12-23
  • 2021-09-22
  • 2022-01-18
  • 2021-11-27
  • 2022-12-23
  • 2021-11-07
  • 2021-11-29
相关资源
相似解决方案