Pythonでのマルチプロセスプログラム処理とシステムとの簡単な相互作用(CPU使用率の確認、システムディスク使用率の確認など)。

マルチプロセッシングパッケージを使用した場合
のプロセス指向コードは次のとおりです。

# 导入多进程开发模块
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();

オブジェクト指向、クラスを継承する必要がある、runメソッドを書き直す

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();

テストプロセスの子プロセスの必須の実行

# 导入多进程开发模块
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();

プロセスの中断を強制する

# 导入多进程开发模块
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();

デーモンは、プロセスの1つが存在する状態で存在します

# 导入多进程开发模块
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();

forkとosを使用して子プロセスを作成します。ForkはLinux環境で子プロセスを作成する方法です。Windowsでは作成されない場合があります。
次のコードを使用してエラーを報告してください。

# 导入多进程开发模块
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
はすべてのプロセス情報を取得します

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();

オペレーティングシステムのexeプログラムを閉じ、
注意して使用してください

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();

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();

システムディスクを表示

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();

ローカルネットワーク接続を表示し、現在のハードウェアでサポートされているすべてのネットワークデバイスを直接出力し、それぞれのネットワークステータスの情報を取得します。

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();

これを見ると、
Pythonは世界で最高の言語であり、
人生は短い言う人がいる理由がわかります。私はPythonを学びました。
他の言語と比較して、いくつかの機能を実装する必要のあるコードがたくさんあります。ハードウェア間の相互作用また、非常に簡単であり、Pythonの操作、保守、および自動化のサポートが本当に素晴らしいことをため息をつく必要があります。

おすすめ

転載: blog.csdn.net/weixin_44887276/article/details/114694823