多进程任务1

编辑器vim的介绍

  Vim(Vi IMproved)是一个功能强大的文本编辑器,它支持多种编程语言,并提供了大量的快捷键和插件来增强编辑效率。Vim的学习曲线较陡峭,但一旦掌握,其效率将远超其他文本编辑器。

编辑器vim的使用

  Vim的使用需要熟悉其基本模式(正常模式、插入模式、命令模式等)以及常用的快捷键。例如,i键进入插入模式,Esc键返回正常模式,:wq保存并退出等。

软件的安装

  在Linux系统中,通常使用包管理器(如apt、yum等)来安装软件。例如,要安装Vim,可以使用以下命令:

sudo apt-get update  
sudo apt-get install vim
 

软件的卸载

  在Linux系统中,可以使用与安装时相同的包管理器来卸载软件。例如,要卸载Vim,可以使用以下命令:

sudo apt-get remove vim
 

多任务的介绍

  多任务处理允许多个任务或进程在操作系统中同时运行。这可以提高系统的利用率和响应速度。

进程

  进程是操作系统分配资源的基本单位,它包含了程序执行所需的所有信息(如代码、数据、堆栈等)。每个进程都有自己的地址空间和系统资源。

多进程的使用

  • 导入进程包 import multiprocessing
  • Process进程类的说明

 

  在Python中,multiprocessing模块提供了对多进程编程的支持。以下是一个简单的示例:

import multiprocessing  
import os  
  
def worker(name, num):  
    print(f'Hello, {name}! I am process {os.getpid()} and my parent is {os.getppid()}.')  
    print(f'I will count to {num}')  
    for i in range(num):  
        print(i)  
  
if __name__ == '__main__':  
    p1 = multiprocessing.Process(target=worker, args=('Alice', 5))  
    p2 = multiprocessing.Process(target=worker, args=('Bob', 10))  
  
    p1.start()  
    p2.start()  
  
    p1.join()  
    p2.join()  
  
    print('All done!')

获取进程编号

目的:验证主进程和子进程的关系,可以得知子进程是由哪个子进程创建出来的 os.getpid() 获取当前进程编号 os.getppod() 获取当前父进程编号

  • os.getpid():获取当前进程编号
  • os.getppid():获取当前父进程编号

进程执行带有参数的任务

  在上面的示例中,我们通过args参数将参数传递给worker函数。

  Process类执行任务幷给任务传参数有两种方式:

  • args 表示以元组的方式给执行任务传参
  • kwargs 表示以字典方式给执行任务传参

进程的注意点

  • 进程之间不共享全局变量:每个进程都有自己的内存空间,因此它们不能直接访问其他进程的全局变量。如果需要共享数据,可以使用管道、队列、共享内存等方式。
  • 主进程会等待所有子进程完成以后再退出:默认情况下,主进程会等待所有子进程完成后再退出。如果希望主进程不等待子进程,可以将子进程设置为守护进程(sub_process.daemon = True)。但请注意,守护进程在主进程退出时会被立即销毁,因此如果子进程还需要完成一些重要的清理工作,那么不应该将其设置为守护进程。

  另外,还可以使用sub_process.terminate()来强制结束一个子进程。但请注意,这只是一种暴力结束进程的方式,可能会导致数据丢失或其他未预期的问题。因此,在可能的情况下,最好使用更温和的方式来结束进程(如发送一个信号让子进程自己退出)。

posted @ 2024-06-15 00:26  JJJhr  阅读(7)  评论(0编辑  收藏  举报