for循环fork创建进程,fork()fork()创建了几个进程
除了多线程编程,Python还支持使用多个进程实现并发编程。
Python的os模块提供了一个fork()方法,可以派生出一个子进程。简单来说,fork()方法的作用就是程序会启动两个进程(一个是父进程,一个是来自fork的子进程)来执行来自os.fork()的所有代码。
fork()方法不需要参数,它有一个指示正在执行哪个进程的返回值:
如果fork()方法返回0,则表明fork-out子流程正在执行。
如果fork()方法返回非0,表示父进程正在执行,该方法返回从fork()出来的子进程的进程ID。
下面的程序演示了使用fork()方法创建新进程的过程:
进口货
Print(父进程(%s)开始执行 %os.getpid()
#将fork作为子进程启动
#从这一行代码开始,下面的代码将由两个进程执行。
pid=os.fork()
Print(输入的进程:%s%os.getpid())
#如果pid为0,则表示有一个子进程
ifpid==0:
print( ID为(%s)且父进程ID为(%s)的子进程 %(os.getpid(),os.getppid()))
else:
Print (I (%s)创建了ID为(%s)的子进程。%(os.getpid(),pid))
print( End of process:% s % OS . getpid())上面的程序分叉出一个子进程,也就是说程序会使用父进程和子进程分别执行从这行代码开始的代码。
在Linux或者Mac OS X系统上运行上面的程序(Windows不支持fork()方法,所以在Windows系统上运行上面的程序会报锚),可以看到下面的运行结果:
父进程(1795)开始执行。
流程入口:1795
我(1795)创建了一个ID为(1796)的子进程。
过程结束:1795
过程入口:1796
ID为1796的子进程和ID为1795的父进程
进程结束:1796从上面的运行结果可以看出,此时程序使用两个进程来执行从“进程入口”到“进程结束”的代码,这就是os.fork()方法的作用。
在实际编程中,程序可以通过fork()方法创建一个子进程,然后通过判断fork()方法的返回值来判断程序是否正在执行子进程,即把需要并发执行的任务放在if pid==0:的条件执行器中,这样就可以启动多个子进程来执行并发任务。
需要注意的是,os.fork()方法在Windows系统上无效,只在UNIX和类UNIX系统上有效,包括UNIX、Linux和MacOSX X。
郑重声明:本文由网友发布,不代表盛行IT的观点,版权归原作者所有,仅为传播更多信息之目的,如有侵权请联系,我们将第一时间修改或删除,多谢。