03、多进程学习之——第一个案例

进程:
是一个执行中的程序,由操作系统进行管理
每个进程都拥有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据,操作系统管理其上所有进程的执行,并且未这些进程合理地分配时间,进程也可以通过派生(fork或者spawn)新的进程来执行其他任务。

第一个程序(使用函数的方法)

import os
import time
from multiprocessing import Process

def do_sth(name):
    """
    进程要做的事情
    :param name: 进程的名称
    """
    print('进程的名称:{0},id:{1}.'.format(name,os.getpid()))
    time.sleep(100)
    print('进程要做的事情')

if __name__ == '__main__':
    # 参数这里传入一个元组,由于是一个元组且只有一个my process实参,所以这里要加上一个逗号
    p = Process(target=do_sth,args=('my process',))
    # 启动进程
    p.start()
    # 要看到结果,就要挂起进程
    p.join()

第一个程序(使用类的方法)

import os
import time
from multiprocessing import Process

def do_sth(name):
    """
    进程要做的事情
    :param name: 进程的名称
    """
    print('进程的名称:{0},id:{1}.'.format(name,os.getpid()))
    time.sleep(100)
    print('进程要做的事情')

# 使用类的方法来实现多进程
class MyProcess(Process):
    # 假设还有其它参数传进来,所以保留*args, **kwargs
    def __init__(self, name, *args, **kwargs):
        # 注意,这里不能写成self.name,因为这个已经被源码用掉了
        self.my_name = name
        super().__init__(*args, **kwargs)

    def run(self):
        # 在类中,使用__init__方法将外面的参数传进来
        print('MyProcess进程的名称:{0},id:{1}.'.format(self.my_name, os.getpid()))
        time.sleep(100)
        print('MyProcess进程要做的事情')

if __name__ == '__main__':
    # 使用函数的方法实现多进程
    # 参数这里传入一个元组,由于是一个元组且只有一个my process实参,所以这里要加上一个逗号
    # p = Process(target=do_sth,args=('my process',))
    # 使用类构造的方法实现多进程
    p = MyProcess('my process class')
    # 启动进程
    p.start()
    # 要看到结果,就要挂起进程
    p.join()

你可能感兴趣的:(03、多进程学习之——第一个案例)