标签:实例 时间 rmi 系统 区别 超时 live tpi 操作系统
编写完毕的代码,在没有运行的时候,称之为程序
正在运行着的代码,就成为进程
进程,除了包含代码以外,还有需要运行的环境等,所以和程序是有区别的
FORK
#coding=utf-8 import os import time num = 0 # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以 pid = os.fork() #相当于创建了2个进程
if pid == 0: num+=1 print(‘哈哈1---num=%d‘%num) else: time.sleep(1) num+=1 print(‘哈哈2---num=%d‘%num)
运行结果:
结果
如果在一个程序,有2次的fork函数调用,是否就会有3个进程呢?
#coding=utf-8 import os import time # 注意,fork函数,只在Unix/Linux/Mac上运行,windows不可以 pid = os.fork() if pid == 0: print(‘哈哈1‘) else: print(‘哈哈2‘) pid = os.fork() if pid == 0: print(‘哈哈3‘) else: print(‘哈哈4‘) time.sleep(1)
运行结果:
所以 上面的if else 分成两个进程,两个进程结束后又各自分出2个进程 一共四个进程。
父进程、子进程执行顺序没有规律,完全取决于操作系统的调度算法
#下面是fork炸弹,不信你可以一下。。 while Ture: os.fork
如果你打算编写多进程的服务程序,Unix/Linux无疑是正确的选择。由于Windows没有fork调用,难道在Windows上无法用Python编写多进程的程序?
由于Python是跨平台的,自然也应该提供一个跨平台的多进程支持。multiprocessing模块就是跨平台版本的多进程模块。
multiprocessing模块提供了一个Process类来代表一个进程对象,下面的例子演示了启动一个子进程并等待其结束:
from multiprocessing import Process # 子进程要执行的代码 def test(name): print(‘子进程运行中,name= %s ,pid=%d...ppid=%d‘ % (name, os.getpid(),os.getppid())) if __name__==‘__main__‘: print(‘父进程 %d.‘ % os.getpid()) p = Process(target=test, args=(‘test‘,)) print(‘子进程将要执行‘) p.start()#让这个进程开始执行test函数里的代码 p.join()# 等待子进程结束 print(‘子进程已结束‘)
运行结果:
标签:实例 时间 rmi 系统 区别 超时 live tpi 操作系统
原文地址:http://www.cnblogs.com/tigercoll/p/6959359.html