Procesamiento de programas multiproceso en Python e interacción simple con el sistema (verifique el uso de la CPU, verifique el uso del disco del sistema, etc.);

Usando el paquete de multiprocesamiento,
el código orientado al proceso es el siguiente

# 导入多进程开发模块
import multiprocessing,time


def main():
    print("主进程程序,进程id:{},进程名字:{};".format(multiprocessing.current_process().pid,
                                          multiprocessing.current_process().name));

if __name__ == '__main__':
    main();
# 导入多进程开发模块
import multiprocessing,time
# 多进程处理函数
def worker(delay,count):
    for num in range(count):
        # 打印多进程的执行id和名字
        print("第:{}次,进程id:{},进程名字:{};".format(num,multiprocessing.current_process().pid,multiprocessing.current_process().name));
        time.sleep(delay);

def main():
    for item in range(3):
        # 循环3次,每次循环创建一个进程
        # target = worker执行worker函数
        # args=(0,10) 线程休眠0,执行10次
        # name = "test进程:{}".format(item) 进程名字
        process = multiprocessing.Process(target=worker,args=(0,10),name="test进程:{}".format(item));
        # 执行进程启动
        process.start();
if __name__ == '__main__':
    main();

Orientado a objetos, necesita heredar la clase, reescribir el método de ejecución

import multiprocessing,time

class MyProcess(multiprocessing.Process):
    def __init__(self,name,delay,count):
        super().__init__(name = name);
        self._delay = delay;
        self._count = count;

    def run(self):
        for item in range(self._count):
            print("第:{}次,进程id:{},进程名字:{};".format(item, multiprocessing.current_process().pid,
                                                  multiprocessing.current_process().name));
        time.sleep(self._delay);

def main():
    for item in range(3):
        process = MyProcess("测试多进程",1,10);
        process.start();

if __name__ == '__main__':
    main();

Ejecución obligatoria del proceso hijo del proceso de prueba

# 导入多进程开发模块
import multiprocessing,time
# 多进程处理函数
def send(msg):
    time.sleep(5);
    # 打印多进程的执行id和名字
    print("进程id:{},进程名字:{};".format(multiprocessing.current_process().pid,multiprocessing.current_process().name));

def main():
    process = multiprocessing.Process(target=send,args=("奥利给",),name="测试发送进程");
    # 启动子进程
    process.start();
    # process.join(),代表子进程强制执行,不加的话会导致主进程先执行之后才会执行子进程
    process.join();

    print("进程id:{},进程名字:{};信息发送完毕".format(multiprocessing.current_process().pid,multiprocessing.current_process().name));

if __name__ == '__main__':
    main();

Forzar la interrupción del proceso

# 导入多进程开发模块
import multiprocessing,time
# 多进程处理函数
def send(msg):
    time.sleep(10);
    # 打印多进程的执行id和名字
    print("进程id:{},进程名字:{};".format(multiprocessing.current_process().pid,multiprocessing.current_process().name));

def main():
    process = multiprocessing.Process(target=send,args=("奥利给",),name="测试发送进程");
    # 启动子进程
    process.start();
    time.sleep(2);
    # 如果子线程还存在,进程中断
    if process.is_alive():
        process.terminate();
        print("进程执行被中断 {}".format(process.name));

    print("进程id:{},进程名字:{};信息发送完毕".format(multiprocessing.current_process().pid,multiprocessing.current_process().name));

if __name__ == '__main__':
    main();

El demonio existe con la existencia de uno de los procesos

# 导入多进程开发模块
import multiprocessing,time
# 守护进程
def status():
    item = 1;
    while True:
        print("进程id:{},进程名字:{},item = {};".format(
            multiprocessing.current_process().pid,
            multiprocessing.current_process().name,
            item
        ));
        item+=1;
        time.sleep(1);

# 多进程处理函数
def work():
    process = multiprocessing.Process(target=status, name="守护进程", daemon=True);
    # 启动守护进程;
    process.start();
    # 进程工作10次
    for item in range(10):
        # 打印多进程的执行id和名字
        print("进程id:{},进程名字:{},item = {};".format(
            multiprocessing.current_process().pid,
            multiprocessing.current_process().name,
            item
        ));
        time.sleep(2);

def main():
    process = multiprocessing.Process(target=work,name="测试工作进程");
    # 启动子进程
    process.start();

if __name__ == '__main__':
    main();

Utilice fork y os para crear un proceso hijo. Fork es una forma de crear un proceso hijo en el entorno Linux. Es posible que no se cree en Windows.
Utilice el siguiente código para informar de un error

# 导入多进程开发模块
import multiprocessing,time,os

def chile():
    print("chile 父进程id :{},子进程id:{}".format(os.getppid(),os.getpid()))

def main():
    print("main进程id:{},进程名字:{};".format(
        multiprocessing.current_process().pid,
        multiprocessing.current_process().name
    ));
    newpid = os.fork();
    print("fock新的子进程id".format(newpid));
    if newpid == 0:
        chile();
    else:
        print("父进程执行,父进程id:{}".format(os.getpid()));
if __name__ == '__main__':
    main();

psutil
obtiene toda la información del proceso

import psutil

def main():
    # psutil.process_iter() 获取全部进程
    for process in psutil.process_iter():
        print("进程编号:{},进程名称:{},创建时间:{}".format(
            process.pid,
            process.name(),
            process.create_time()
        ));

if __name__ == '__main__':
    main();

Cierre el programa exe del sistema operativo
, utilícelo con precaución

import psutil

def main():
    # psutil.process_iter() 获取全部进程
    for process in psutil.process_iter():
        if process.name == 'notepad.exe':
            # 进程强制中断
            process.terminate();
            print("目前有文档程序在运行,强制关闭");

if __name__ == '__main__':
    main();

Obtener el uso de la CPU

import psutil

def main():
    print("物理CPU数量:{}".format(psutil.cpu_count(logical=False)))
    print("逻辑CPU数量:{}".format(psutil.cpu_count(logical=True)))
    print("用户CPU使用时间:{},系统CPU使用时间:{},CPU空闲时间:{}".format(
        psutil.cpu_times().user,
        psutil.cpu_times().system,
        psutil.cpu_times().idle
    ));
    for item in range(10):
        print("CPU使用率监控:{}".format(psutil.cpu_percent(interval=1,percpu=True)))

if __name__ == '__main__':
    main();

Ver el disco del sistema

import psutil

def main():
    print("磁盘分区 获取全部磁盘信息: {}".format(psutil.disk_partitions()));
    print("磁盘使用率 获取E磁盘使用率: {}".format(str(psutil.disk_usage("e:"))));
    print("磁盘IO 获取磁盘IO使用率: {}".format(str(psutil.disk_io_counters())));

if __name__ == '__main__':
    main();

Ver la conexión de red local, generar directamente todos los dispositivos de red admitidos en el hardware actual y obtener la información de sus respectivos estados de red;

import psutil
def main():
    print("数据统计 网络数据交互信息:{}".format(str(psutil.net_io_counters())));
    print("接口统计 网络接口信息:{}".format(psutil.net_if_addrs()));
    print("接口状态 网络接口状态:{}".format(psutil.net_if_stats()));

if __name__ == '__main__':
    main();

Al ver esto, puedes entender por qué algunas personas dicen que
Python es el mejor lenguaje del mundo y la
vida es corta. Aprendí Python.
En comparación con otros lenguajes, hay mucho código que necesita implementar algunas funciones. La interacción entre hardware también es muy fácil, y tengo que suspirar que el soporte de Python para operación, mantenimiento y automatización es realmente grandioso;

Supongo que te gusta

Origin blog.csdn.net/weixin_44887276/article/details/114694823
Recomendado
Clasificación