系统相关
首页 > 系统相关> > python进程(1)简单使用

python进程(1)简单使用

作者:互联网

在python中使用进程的时候是使用的是multiprocessing库。
下面简单总结python中的进程符合创建以及使用。

1、process进程类的说明

(1) Process([group[,target[,name[,args[,kwargs]]]]])
参数说明:

(2) Process创建实例对象的常用方法:

(3) process进程实例

# 1、导入进程包
import multiprocessing
import time

# 跳舞任务
def dance():
    for i in range(3):
        print('正在跳舞中......')
        time.sleep(0.3)
# 唱歌任务
def sing():
    for i in range(3):
        print('正在唱歌中......')
        time.sleep(0.4)

# 2、实例化子进程
dance_process = multiprocessing.Process(target=dance)


if __name__ == '__main__':


    # 3、启动子进程,去执行对应的任务
    dance_process.start()

    # 主进程执行唱歌任务
    sing()


运行结果:
正在唱歌中......
正在唱歌中......
正在跳舞中......
正在跳舞中......
正在唱歌中......
正在跳舞中......
# 1、导入进程包
import multiprocessing
import time

# 跳舞任务
def dance():
    for i in range(3):
        print('正在跳舞中......')
        time.sleep(0.3)
# 唱歌任务
def sing():
    for i in range(3):
        print('正在唱歌中......')
        time.sleep(0.4)

# 2、实例化子进程
dance_process = multiprocessing.Process(target=dance)
sing_process = multiprocessing.Process(target=sing)

if __name__ == '__main__':


    # 3、启动子进程,去执行对应的任务
    dance_process.start()

    # 子进程执行唱歌任务
    sing_process.start()

运行结果:
正在跳舞中......
正在唱歌中......
正在跳舞中......
正在唱歌中......
正在跳舞中......
正在唱歌中......

进程执行是无序的,具体哪个及产能先执行是由操作系统调度决定的。

2、获取进程的编号

(1) 获取进程编号的目的
获取进程编号的目的是为了验证主进程和子进程之间的关系,可以得知子进程是由哪一个主进程创建的。
操作步骤:获取当前进程的编号,通过该进程获取父进程的编号,如果获取到父进程的编号是当前主进程的编号,那么该子进程就是该主进程创建的。

(2) 获取当前进程的编号

# 1、导入进程包
import multiprocessing
import time
import os

# 跳舞任务
def dance():
    # 获取当前dance程序进程的id
    dance_process_id = os.getpid()

    # 获取当前dance程序进程对象
    dance_process_obj = multiprocessing.current_process()
    print('dance进程的对象:%s, dance进程的id:%s' %(dance_process_obj, dance_process_id))

    # 获取当前dance程序进程的父进程id
    dance_process_parent_id = os.getppid()
    print('dance程序进程的父进程的id:', dance_process_parent_id)

    for i in range(3):
        print('正在跳舞中......')
        time.sleep(0.3)


# 唱歌任务
def sing():
    # 获取当前sing程序进程的id
    sing_process_id = os.getpid()

    # 获取当前sing程序进程对象
    sing_process_obj = multiprocessing.current_process()
    print('sing进程的对象:%s, sing进程的id:%s' %(sing_process_obj, sing_process_id))

    # 获取当前sing程序进程的父进程id
    sing_process_parent_id = os.getppid()
    print('sing程序进程的父进程的id:', sing_process_parent_id)

    for i in range(3):
        print('正在唱歌中......')
        time.sleep(0.4)

# 2、实例化子进程
dance_process = multiprocessing.Process(target=dance, name="dance_process")
sing_process = multiprocessing.Process(target=sing, name="sing_process")

if __name__ == '__main__':


    # 3、启动子进程,去执行对应的任务
    dance_process.start()

    # 子进程执行唱歌任务
    sing_process.start()

    # 获取当前main程序进程的id
    main_process_id = os.getpid()
    print('当前main程序进程的id:',main_process_id)

    # 获取当前main程序进程对象
    main_process_obj = multiprocessing.current_process()
    print('当前main程序进程对象:',main_process_obj)


运行结果:
当前main程序进程的id: 7032
当前main程序进程对象: <_MainProcess(MainProcess, started)>
dance进程的对象:<Process(dance_process, started)>, dance进程的id:1392
dance程序进程的父进程的id: 7032
正在跳舞中......
sing进程的对象:<Process(sing_process, started)>, sing进程的id:2104
sing程序进程的父进程的id: 7032
正在唱歌中......
正在跳舞中......
正在唱歌中......
正在跳舞中......
正在唱歌中......

由结果看出,sing子程序和dance子程序都是由主程序MainProcess创建的。

**(3)**杀死指定进程
os.kill(process_id,sig):process_id为要杀死的指定进程的id,sig为操作状态:操作(第二个参数)的常用取值为:

# 1、导入进程包
import multiprocessing
import time
import os
import signal

# 跳舞任务
def dance():
    # 获取当前dance程序进程的id
    dance_process_id = os.getpid()

    # 获取当前dance程序进程对象
    dance_process_obj = multiprocessing.current_process()
    print('dance进程的对象:%s, dance进程的id:%s' %(dance_process_obj, dance_process_id))

    # 获取当前dance程序进程的父进程id
    dance_process_parent_id = os.getppid()
    print('dance程序进程的父进程的id:', dance_process_parent_id)

    for i in range(3):
        print('正在跳舞中......')
        time.sleep(0.3)

        os.kill(dance_process_id, signal.SIGKILL)


# 唱歌任务
def sing():
    # 获取当前sing程序进程的id
    sing_process_id = os.getpid()

    # 获取当前sing程序进程对象
    sing_process_obj = multiprocessing.current_process()
    print('sing进程的对象:%s, sing进程的id:%s' %(sing_process_obj, sing_process_id))

    # 获取当前sing程序进程的父进程id
    sing_process_parent_id = os.getppid()
    print('sing程序进程的父进程的id:', sing_process_parent_id)

    for i in range(3):
        print('正在唱歌中......')
        time.sleep(0.4)

# 2、实例化子进程
dance_process = multiprocessing.Process(target=dance, name="dance_process")
sing_process = multiprocessing.Process(target=sing, name="sing_process")

if __name__ == '__main__':


    # 3、启动子进程,去执行对应的任务
    dance_process.start()

    # 子进程执行唱歌任务
    sing_process.start()

    # 获取当前main程序进程的id
    main_process_id = os.getpid()
    print('当前main程序进程的id:',main_process_id)

    # 获取当前main程序进程对象
    main_process_obj = multiprocessing.current_process()
    print('当前main程序进程对象:',main_process_obj)

运行结果:
当前main程序进程的id: 2044
当前main程序进程对象: <_MainProcess(MainProcess, started)>
dance进程的对象:<Process(dance_process, started)>, dance进程的id:9404
sing进程的对象:<Process(sing_process, started)>, sing进程的id:10940
dance程序进程的父进程的id: 2044
正在跳舞中......
sing程序进程的父进程的id: 2044
正在唱歌中......
正在唱歌中......
正在唱歌中......

由此可以看出dance进程已经被杀死。

标签:python,......,process,dance,简单,进程,sing,id
来源: https://blog.csdn.net/time_money/article/details/120101311