Python学习:进程的创建与结束

一、进程的创建

但凡是硬件,都需要有操作系统去管理,只要有操作系统,就有进程的概念,就需要有创建进程的方式,一些操作系统只为一个应用程序设计,比如微波炉中的控制器,一旦启动微波炉,所有的进程都已经存在。

而对于通用系统(跑很多应用程序),需要有系统运行过程中创建或撤销进程的能力,主要分为4中形式创建新的进程:

  1. 系统初始化(查看进程linux中用ps命令,windows中用任务管理器,前台进程负责与用户交互,后台运行的进程与用户无关,运行在后台并且只在需要时才唤醒的进程,称为守护进程,如电子邮件、web页面、新闻、打印)
  2. 一个进程在运行过程中开启了子进程(如nginx开启多进程,os.fork,subprocess.Popen等)
  3. 用户的交互式请求,而创建一个新进程(如用户双击暴风影音)
  4. 一个批处理作业的初始化(只在大型机的批处理系统中应用

无论哪一种,新进程的创建都是由一个已经存在的进程执行了一个用于创建进程的系统调用而创建的。

UNIX和Windows创建进程

关于创建子进程,UNIX和Windows:

  • 相同的是:进程创建后,父进程和子进程有各自不同的地址空间(多道技术要求物理层面实现进程之间内存的隔离),任何一个进程的在其地址空间中的修改都不会影响到另外一个进程。
  • 不同的是:在UNIX中,子进程的初始地址空间是父进程的一个副本,提示:子进程和父进程是可以有只读的共享内存区的。但是对于Windows系统来说,从一开始父进程与子进程的地址空间就是不同的。

二、进程的结束

  • 正常退出(自愿,如用户点击交互式页面的叉号,或程序执行完毕调用发起系统调用正常退出,在linux中用exit,在windows中用ExitProcess)

  • 出错退出(自愿,python a.py中a.py不存在)

  • 严重错误(非自愿,执行非法指令,如引用不存在的内存,1/0等,可以捕捉异常,try…except…)

  • 被其他进程杀死(非自愿,如kill -9)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
根据提供的引用内容,可以得知在Python创建进程非常简单,只需要使用multiprocessing模块中的Process类即可。而要在子进程中再次创建进程,只需要在子进程中再次调用Process类即可。下面是一个简单的例子: ```python import multiprocessing import time def child_process(): print("Child process start") sub_process = multiprocessing.Process(target=sub_child_process) sub_process.start() sub_process.join() print("Child process end") def sub_child_process(): print("Sub child process start") time.sleep(1) print("Sub child process end") if __name__ == '__main__': process = multiprocessing.Process(target=child_process) process.start() process.join() print("Main process end") ``` 在上面的例子中,首先定义了两个函数child_process和sub_child_process,分别代表父进程和子进程。在child_process函数中,首先输出一句话表示子进程开始执行,然后再次调用Process类创建一个子进程sub_process,并调用start方法启动进程。接着调用join方法等待子进程结束,最后输出一句话表示子进程结束。在sub_child_process函数中,输出一句话表示子子进程开始执行,然后等待1秒钟,最后输出一句话表示子子进程结束。 在主程序中,首先创建一个Process对象process,并调用start方法启动进程。接着调用join方法等待进程结束,最后输出一句话表示主进程结束。运行上面的程序,可以看到输出结果如下: ``` Child process start Sub child process start Sub child process end Child process end Main process end ``` 可以看到,程序首先输出了子进程开始执行的信息,然后输出了子子进程开始执行的信息,等待1秒钟后输出了子子进程结束的信息,接着输出了子进程结束的信息,最后输出了主进程结束的信息。这表明在Python创建进程非常简单,而且可以在子进程中再次创建进程

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值