Python 的 os.fork() 函数是用于创建一个新的进程的方法,他会创建一个子进程(称为子进程),该进程是原始进程(称为父进程)的复制。子进程只会在 fork() 被调用时开始执行下去,而且出现在子进程复制处的所有进程信息都会被复制到子进程中。在运行 fork() 后,子进程将获得其自己独立的内存,而父进程的内存则保持不变。
使用方法:
在Python中,os.fork()函数的调用方式如下:
pid = os.fork()
在这里,pid 变量存储的是执行 fork() 的结果。如果 pid 大于零,那么就代表当前进程是父进程,并且 pid 是子进程的 ID。如果 pid 等于0,则代表当前进程是子进程。如果 fork() 函数调用失败,则 pid 将等于 -1。
在子进程中,我们可以使用返回的 pid 变量来执行与父进程不同的任务,并使用 os.getpid() 函数找到当前进程的 ID。
这里是 Python os.fork() 的简单示例:
import os
def child_process():
print('I am child process. My PID is: {}'.format(os.getpid()))
def parent_process():
print('I am parent process. My PID is: {}'.format(os.getpid()))
pid = os.fork()
if pid == 0:
child_process()
else:
print('I just spawned a child process. Its PID is: {}'.format(pid))
parent_process()
然后执行代码,将产生如下输出:
I am parent process. My PID is: 44432
I just spawned a child process. Its PID is: 44433
I am child process. My PID is: 44433
在上面的示例中,我们创建了两个函数:parent_process() 和 child_process()。在 parent_process() 函数中,我们首先打印当前进程的 PID,然后使用 os.fork() 函数获取子进程的 PID。如果 pid 的值等于 0,则代表当前进程是子进程,因此它会打印出自己的 PID。否则,如果 pid 的值大于 0,则代表当前进程是父进程,因此它会打印出子进程的 PID。
总结:
- os.fork() 函数是 Python 中用于创建子进程的函数。
- 在调用 os.fork() 函数后,子进程将从与父进程相同的位置开始执行。
- 父进程可以使用返回的 pid 变量进行自己的任务,而子进程可以使用 os.getpid() 函数获取自己的 ID 进行执行。
- 如果 os.fork() 函数调用失败,则 pid 等于 -1。
- 由于 fork() 函数会复制父进程的所有信息,因此子进程将拥有父进程的所有变量、资源和状态。