多进程调用

Posted dangrui0725

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了多进程调用相关的知识,希望对你有一定的参考价值。

# 多进程调用(大部分与多线程的操作一样)
# 调用方式1
from multiprocessing import Process
import time


def f(name):
    time.sleep(1)
    print(hello, name, time.ctime())


if __name__ == __main__:
    p_list = []
    for i in range(3):
        p = Process(target=f, args=(alex,))
        p_list.append(p)
        p.start()
    for i in p_list:
        i.join()
    print(end)

# 调用方式2
from multiprocessing import Process
import time


class MyProcess(Process):
    # def __init__(self):
    #     super(MyProcess, self).__init__()
    #     self.name = name

    def run(self):
        time.sleep(1)
        print(hello, self.name, time.ctime())


if __name__ == __main__:
    p_list = []
    for i in range(3):
        p = MyProcess()
        # p.daemon = True   # 设置守护进程
        p.start()
        p_list.append(p)
    # for i in p_list:
    #     i.join()

    print(end...)


# 查看进程的pid
from multiprocessing import Process
import os, time


def info(title):
    print(title:, title)
    print(parent process:, os.getppid())
    print(process id:, os.getpid())


def f(name):
    info(function f)
    print(hello, name)


if __name__ == __main__:
    info(main process line)
    time.sleep(1)
    print(- * 30)
    p = Process(target=info, args=(alex,))
    p.start()
    p.join()

    # title: main process line
    # parent process: 1792      # 父进程的进程pid(pycharm)
    # process id: 4116      # 当前.py文件运行的pid
    # ------------------------------
    # title: alex
    # parent process: 4116      # 父进程的pid即当前.py文件运行的pid
    # process id: 6392      # 产生的子进程的pid

 

# Process类的方法与属性
# 构造方法:
# Process(group[, target[, name[, args[, kwargs]]]])
# group: 线程组,目前还没有实现,库引用中提示必须是None
# target: 要执行的方法
# name: 指定进程名
# args / kwargs: 要传入方法的参数
#
# 实例方法:
# is_alive() 返回进程是否在运行
# join([timeout]) 阻塞当前上下文环境的进程,直到调用此方法的进程终止或到达指定的timeout
# start() 进行准备就绪,等待cpu调度
# run() start()方法调用run方法,如果实例进程时未制定传入target,这start执行默认run方法
# terminate() 不管任务是否完成,立即停止工作进程
#
# 属性:
# daemon 和线程的setDaemon功能一样
# name 进程名字
# pid 进程号

from multiprocessing import Process
import time


class MyProcess(Process):
    def __init__(self, num):
        super(MyProcess, self).__init__()
        self.num = num

    def run(self):
        time.sleep(1)
        print(self.is_alive(), self.num, self.pid)
        time.sleep(1)


if __name__ == __main__:
    p_list = []
    for i in range(10):
        p = MyProcess(i)
        p_list.append(p)

    for p in p_list:
        p.start()

    print(main process end)

 

以上是关于多进程调用的主要内容,如果未能解决你的问题,请参考以下文章

多个请求是多线程吗

线程学习知识点总结

shell学习四十九天----进程建立

多线程编程

多线程编程

python多线程