python-- 进程的常用属性、守护进程

简介: python-- 进程的常用属性、守护进程

常用属性


  • p.name = 给p进程一个名字
  • p.pid 返回p进程的pid
  • p.daemon = True 将p进程设置为守护进程。(True为守护进程,False为普通进程)
from multiprocessing import Process
import os
import time
def func():
    print('这里是儿子,儿子的pid是%s' % (os.getpid()))
if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    p.name = 'zou'
    print('儿子的名字是%s' % (p.name))
    print('儿子的pid是%s' % (p.pid))
    print('儿子是不是守护进程?', p.daemon)

结果:

儿子的名字是zou
儿子的pid是3706
儿子是不是守护进程? False
这里是儿子,儿子的pid是3706


守护进程


  • 守护进程,必须要在start之前设置,之后设置会报错
  • 守护进程:跟随着父进程的代码执行结束,守护进程就结束(不严谨,看下面的例子)
  • 守护进程:不允许开启子进程

没有守护进程

from multiprocessing import Process
import os
import time
def func():
    print('子进程结束了')
if __name__ == '__main__':
    p = Process(target=func)
    p.start()
    p.name = 'zou'
    print('主进程结束了')

结果:

主进程结束了
子进程结束了

没有守护进程时,主进程结束了,子进程还在执行

有守护进程

from multiprocessing import Process
import os
import time
def func():
    print('子进程结束了')
if __name__ == '__main__':
    p = Process(target=func)
    p.daemon = True  # 将p进程设置为守护进程,必须要在start之前设置
    p.start()
    p.name = 'zou'
    print('主进程结束了')

结果:

主进程结束了

将p进程设置为守护进程后,主进程结束后,不管子进程执行到哪,子进程都会结束

from multiprocessing import Process
import os
import time
def func():
    time.sleep(1)
    print('子进程结束了')
if __name__ == '__main__':
    p = Process(target=func)
    p.daemon = True  # 将p进程设置为守护进程,必须要在start之前设置
    p.start()
    p.name = 'zou'
    print('主进程结束了')
    p.join()

结果:

主进程结束了
子进程结束了

如果有join()则会等待子进程结束完


守护进程:不允许开启子进程


没有设置守护进程时

from multiprocessing import Process
import time
def demo():
    print('demo....')
def func():
    p1 = Process(target=demo)
    p1.start()
    print('子进程结束了')
if __name__ == '__main__':
    p = Process(target=func)
    # p.daemon=True# 将p进程设置为守护进程,必须要在start之前设置
    p.start()
    p.name = 'zou'
    print('主进程结束了')
    time.sleep(2)

结果:

可以启动子进程

主进程结束了
子进程结束了
demo....

设置了守护进程

from multiprocessing import Process
import os
import time
def demo():
    print('demo....')
def func():
    p1 = Process(target=demo)
    p1.start()
    print('子进程结束了')
if __name__ == '__main__':
    p = Process(target=func)
    p.daemon = True  # 将p进程设置为守护进程
    p.start()
    p.name = 'zou'
    print('主进程结束了')
    time.sleep(2)

运行会报错


相关文章
|
1月前
|
Java 数据处理 索引
(Pandas)Python做数据处理必选框架之一!(二):附带案例分析;刨析DataFrame结构和其属性;学会访问具体元素;判断元素是否存在;元素求和、求标准值、方差、去重、删除、排序...
DataFrame结构 每一列都属于Series类型,不同列之间数据类型可以不一样,但同一列的值类型必须一致。 DataFrame拥有一个总的 idx记录列,该列记录了每一行的索引 在DataFrame中,若列之间的元素个数不匹配,且使用Series填充时,在DataFrame里空值会显示为NaN;当列之间元素个数不匹配,并且不使用Series填充,会报错。在指定了index 属性显示情况下,会按照index的位置进行排序,默认是 [0,1,2,3,...] 从0索引开始正序排序行。
226 0
|
4月前
|
监控 编译器 Python
如何利用Python杀进程并保持驻留后台检测
本教程介绍如何使用Python编写进程监控与杀进程脚本,结合psutil库实现后台驻留、定时检测并强制终止指定进程。内容涵盖基础杀进程、多进程处理、自动退出机制、管理员权限启动及图形界面设计,并提供将脚本打包为exe的方法,适用于需持续清理顽固进程的场景。
|
3月前
|
Python
解决Python中AttributeError:'image'对象缺少属性'read_file'的问题策略。
通过上述策略综合考虑,您将能够定位问题并确定如何解决它。记住,Python社区很庞大,也很乐于帮助解决问题,因此不要害怕在求助时提供尽可能多的上下文和您已经尝试过的解决方案。
123 0
|
7月前
|
Python
解决Python报错:DataFrame对象没有concat属性的多种方法(解决方案汇总)
总的来说,解决“DataFrame对象没有concat属性”的错误的关键是理解concat函数应该如何正确使用,以及Pandas库提供了哪些其他的数据连接方法。希望这些方法能帮助你解决问题。记住,编程就像是解谜游戏,每一个错误都是一个谜题,解决它们需要耐心和细心。
365 15
|
8月前
|
Linux
Linux:守护进程(进程组、会话和守护进程)
守护进程在 Linux 系统中扮演着重要角色,通过后台执行关键任务和服务,确保系统的稳定运行。理解进程组和会话的概念,是正确创建和管理守护进程的基础。使用现代的 `systemd` 或传统的 `init.d` 方法,可以有效地管理守护进程,提升系统的可靠性和可维护性。希望本文能帮助读者深入理解并掌握 Linux 守护进程的相关知识。
436 7
|
10月前
|
物联网 Python
请问:如何使用python对物联网平台上设备的属性进行更改?
为验证项目可行性,本实验利用阿里云物联网平台创建设备并定义电流、电压两个整型属性。通过Python与平台交互,实现对设备属性的控制,确保后续项目的顺利进行。此过程涵盖设备连接、数据传输及属性调控等功能。
|
9月前
|
C语言 Python
Python学习:内建属性、内建函数的教程
本文介绍了Python中的内建属性和内建函数。内建属性包括`__init__`、`__new__`、`__class__`等,通过`dir()`函数可以查看类的所有内建属性。内建函数如`range`、`map`、`filter`、`reduce`和`sorted`等,分别用于生成序列、映射操作、过滤操作、累积计算和排序。其中,`reduce`在Python 3中需从`functools`模块导入。示例代码展示了这些特性和函数的具体用法及注意事项。
188 2
|
9月前
|
数据采集 Java 数据处理
Python实用技巧:轻松驾驭多线程与多进程,加速任务执行
在Python编程中,多线程和多进程是提升程序效率的关键工具。多线程适用于I/O密集型任务,如文件读写、网络请求;多进程则适合CPU密集型任务,如科学计算、图像处理。本文详细介绍这两种并发编程方式的基本用法及应用场景,并通过实例代码展示如何使用threading、multiprocessing模块及线程池、进程池来优化程序性能。结合实际案例,帮助读者掌握并发编程技巧,提高程序执行速度和资源利用率。
464 0
|
11月前
|
存储 数据处理 Python
Python如何显示对象的某个属性的所有值
本文介绍了如何在Python中使用`getattr`和`hasattr`函数来访问和检查对象的属性。通过这些工具,可以轻松遍历对象列表并提取特定属性的所有值,适用于数据处理和分析任务。示例包括获取对象列表中所有书籍的作者和检查动物对象的名称属性。
251 2
|
并行计算 数据处理 调度
Python中的并发编程:探索多线程与多进程的奥秘####
本文深入探讨了Python中并发编程的两种主要方式——多线程与多进程,通过对比分析它们的工作原理、适用场景及性能差异,揭示了在不同应用需求下如何合理选择并发模型。文章首先简述了并发编程的基本概念,随后详细阐述了Python中多线程与多进程的实现机制,包括GIL(全局解释器锁)对多线程的影响以及多进程的独立内存空间特性。最后,通过实例演示了如何在Python项目中有效利用多线程和多进程提升程序性能。 ####

热门文章

最新文章

推荐镜像

更多