首页 > 系统相关 >python之进程

python之进程

时间:2022-11-05 22:56:29浏览次数:41  
标签:__ Process python print test 进程 os

一、进程

  进程是计算机资源分配和调度的基本单位,线程是计算机能够进行运算调度的最小单位。

二、python中的进程模块multiprocessing

# 文件名为 test_Process_1
1 import os 2 from multiprocessing import Process 3 5 def test_process(参数1): 6  print("这是一个测试函数") 7  print("获取进程号%s,父进程%s"% (os.getpid(),os.getppid())) 8 9 if __name__ == "__main__": 10 p = Process(target=test_process,args = (对应函数参数1,)) #test_process 函数名后不带括号,且参数的传入是元组 11 p.start() # 开启进程 异步 非阻塞 12 p.join() #同步 阻塞
    print("这是主进程%s"% os.getpid())

   通过以上的运行,可以看到主进程pid与test_process中获得的父进程是一样的,就是说,if __name__ == "__main__":下的代码执行就是一个主进程,

此主进程从上到下,依次执行,运行到p.start()的时候开始创建子进程(在Windows上创建子进程是导入父进程资源的方式开始子进程,Linux,ISO上创建

的子进程是直接从当前开始子进程的地方开始,并不会重新加载父进程的资源)。运行到p.join()时会等待子进程的结束后进入print("这是主进程%s"% os.getpid()),

注意以上同步与异步的理解。

三、守护进程

  守护进程随着主进程代码运行结束的结束而结束

  如下例:

  

# 文件名为 test_Process_2
import os
from multiprocessing import Process

def test_process(参数1):
    print("这是一个测试函数")
    print("获取进程号%s,父进程%s"% (os.getpid(),os.getppid()))

if __name__ == "__main__":
    p = Process(target=test_process,args = (对应函数参数1,))   #test_process 函数名后不带括号,且参数的传入是元组
    p.daemon = True # 守护进程
    p.start() # 开启进程 异步 非阻塞
    #p.join() #同步 阻塞
    print("这是主进程%s"% os.getpid())

  执行此代码 test_process中的代码并不会执行或者说守护进程的原因,主进程的代码运行太快又因为,守护进程是伴随主进程代码的运行结束而结束。故没能执行子进程函数

但是,主进程是子进程结束后再结束的,如果主进程先结束,留下子进程,子进程就会变成僵尸进程。注意理解,守护进程是随着主进程代码的运行结束而结束,主进程并定在子进程结束后再结束。

p.is_alive(),p.terminate() 都是异步非阻塞。

四、创建进程对象

 

from multiprocessing import Process

class Test_Process(Process):
    
    def __init__(self,x,y):
        self.x = x
        self.y = y
        super().__init__()
     
    def run(self):
        print("开启子进程")
        print(self.x,self.y)

if __name__ == "__main__":
    p = Test_Process(参数1,参数2) #若需要传参数,就需要重写 init魔法方法
    p.start() # 执行run的方法   

 

  

标签:__,Process,python,print,test,进程,os
From: https://www.cnblogs.com/jimuerga/p/16861491.html

相关文章

  • Python 函数
    在Python中,使用def关键词定义函数 defmy_fun():print("Hellofromafunvtion")#调用函数#如需调用函数,请使用函数名称跟括号my_fun()参数在函数名后的......
  • python之常用方法
    查找列表中出现最频繁的元素使用​​max()​​函数可以快速查找出一个列表中出现频率最高的某个元素。>>>a=[1,2,3,4,3,4,5,4,4,2]>>>b=max(set(a),key=a......
  • Python自动化测试工具Selenium
    Python能发挥作用的领域太多了,包括web开发、爬虫、自动化测试、大数据分析、机器学习与深度学习。今年我们来玩玩Python在web自动化领域的应用。SeleniumWithPython中文......
  • Python中语音播报的应用(简单版)
    今天分享一个有点好玩的小功能。业务场景:很多小伙伴都坐在写字楼里面办公,忙着忙着就到了中午,把点餐的事情给忘记了。解决的办法也简单,就是在手机上设置闹钟就行了。作为技......
  • 保姆教程:构建与发布Python包
    导读2022年如何创建Python包?如何发布包?这就是本文所教您的。1.大纲为了创建Python包,需要编写实现功能的代码,然后需要将其发布到PyPI。如今,还可以设置各种其它配置,......
  • python编辑excel
    可能是太简单了,python编辑excel的文章在网上太少了,找到的都是创建、写入、保存。这并不是我想要的操作,既然是编辑,必须得在原excel上做更新,以下是我找到方法。import......
  • Python GUI神器Gooey
    GUI是人机交互界面,尽管有些程序是没有界面的,如Windows服务。但绝大多数应用都是需要界面的。Python常用的GUI有Tkinter,PyQT,wxPython等等。工作之余一个偶然的机会发现了......
  • 套汇问题 Python实现,算法设计,DFS深度遍历
    #P67#套汇问题可以理解为一个有向图找出环的问题,#要想有盈利,需要所有的汇率乘积大于1#在贪心条件下,找到一个环路径上的乘积大于1就有套汇的可能性"""#输入一......
  • Python的列表推导式
    你一定听过这样一个说法,尽量使用列表推导式,而不是用list.append方法来初始化一个列表,那么究竟为何列表推导式会更快呢?这是因为,列表推导式被编译后的字节码执行速度更快。py......
  • Mac电脑mds_store进程占用cpu过高
    目前发现还是这个方法靠谱mds、mds_stores、mdworker占用大量的CPU,是因为系统在建立索引,开机后的一段时间比较明显解决方案1:sudomdutil-a-ioff  #关闭sudomdu......