python入门教程12-06 (python语法入门之进程间数据隔离)
进程与进程之间的数据是隔离的,内存空间是不能共享的所以要想进行通信,必须借助其他手段,那么如何去运用呢,下面我们就来看看吧!
进程隔离是为保护操作系统中进程互不干扰而设计的一组不同硬件和软件的技术
这个技术是为了避免进程A写入进程B的情况发生。 进程的隔离实现,使用了虚拟地址空间。进程A的虚拟地址和进程B的虚拟地址不同,这样就防止进程A将数据信息写入进程B
进程隔离的安全性通过禁止进程间内存的访问可以方便实现
代码验证
from multiprocessing import Process
n=100 defwork(): global n
n=0 print('子进程内: ',n)if __name__ == '__main__':p=Process(target=work)p.start()print('主进程内: ',n)
守护进程
会随着主进程的结束而结束,通俗点的说类似于古代的君王和服侍君王的太监,妃子等一干人,只要君王死了其他人都得陪葬一起翘辫子~
主进程创建守护进程
其一:守护进程会在主进程代码执行结束后就终止
其二:守护进程内无法再开启子进程,否则抛出异常:AssertionError: daemonic processes are not allowed to have children
注意:进程之间是互相独立的,主进程代码运行结束,守护进程随即终止
import osimport timefrom multiprocessing import ProcessclassMyprocess(Process): definit(self,person): super().init()
self.person = persondefrun(self): print(os.getpid(),self.name) print('%s正在和女主播聊天' %self.person)
p=Myprocess('炮王')
p.daemon=True # 一定要在p.start()前设置,设置p为守护进程,禁止p创建子进程,并且父进程代码执行结束,p即终止运行p.start()
time.sleep(10) # 在sleep时查看进程id对应的进程ps -ef|grep idprint('主')
迷惑人的小例子
from multiprocessing import Processdeffoo(): print(123)
time.sleep(1)print("end123")defbar(): print(456)time.sleep(3)print("end456")
p1=Process(target=foo)
p2=Process(target=bar)
p1.daemon=Truep1.start()
p2.start()
time.sleep(0.1)
print("main-------")#打印该行则主进程代码结束,则守护进程p1应该被终止.#可能会有p1任务执行的打印信息123,因为主进程打印main----时,p1也执行了,但是随即被终止.
©著作权归作者所有:来自51CTO博客作者上海老男孩教育的原创作品,如需转载,请注明出处,否则将追究法律责任更多相关文章
- python入门教程12-07 (python语法入门之进程互斥锁)
- 代码详解Python多线程、多进程、协程
- 关于php多进程编程(代码详解)
- 关于PHP进程防止内存溢出的排查
- PHP 进程管理器 PHP-FPM
- 看懂PHP进程管理器php-fpm
- 基于PHP-FPM进程池的探索
- 谈谈PHP中的多进程消费队列
- 直击PHP进程管理器php-fpm