Python 进程对象的一些操作


1
from multiprocessing import Process 2 import time 3 4 # 第一种创建方式,实例化Process类传值 5 def task(name): 6 print('%s is running'%name) 7 time.sleep(3) 8 print('%s is over'%name) 9 10 11 if __name__ == '__main__': 12 # 1 创建一个对象 13 p = Process(target=task, args=('谷爱凌',)) 14 p.start() 15 print('主进程') 16 17 18 # 第二种方式 类的继承 19 from multiprocessing import Process 20 import time 21 22 23 class MyProcess(Process): 24 def run(self): # 这里必须要用run方法 25 print('GGG') 26 time.sleep(1) 27 print('YYY') 28 29 30 if __name__ == '__main__': 31 p = MyProcess() 32 p.start() 33 print('主进程') 34   

 

# p.join()方法使主进程必须等待子进程执行完毕返回后才能继续执行
# p.terminate() # 告诉操作系统杀死当前进程 根据操作系统调度可能会有延迟 类似kill
from multiprocessing import Process

# 进程之间数据相互隔离

money = 100


def task():
    global money  # 局部修改全局
    money = 200
    print('子进程',money)


if __name__ == '__main__':
    p = Process(target=task)
    p.start()
    p.join()
    print('主进程',money)

 

from multiprocessing import Process, current_process
查看当前进程号id与父进程号id的方法
'''
current_process().pid  # 查看当前进程的进程号

import os
os.getpid()  # 查看当前进程进程号
os.getppid()  # 查看当前进程的父进程进程号


p.terminate()  # 杀死当前进程 由操作系统执行
time.sleep(0.1) # 如果不加本行延时代码,操作系统调度可能慢于程序执行,导致下一行会判断为仍然存活
print(p.is_alive())  # 判断当前进程是否存活 如果没有上一行的延时,p进程可能仍会判断为存活
'''
# 关于守护进程daemon

from multiprocessing import Process
import time


def task():
    print('子进程活着')
    time.sleep(1)
    print('子进程死亡')


if __name__ == '__main__':
    p = Process(target=task)
    p.daemon=True # 将p作为守护进程,一定要在start前执行才有效
    p.start()
    # p.daemon=True # AssertionError: process has already started
    print('主进程')

 

posted @ 2023-03-10 20:10  palx  阅读(33)  评论(0编辑  收藏  举报