python 多进程获取返回值

Posted

tags:

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

参考技术A

1
def worker(procnum, return_dict):
\'\'\'worker function\'\'\'
print str(procnum) + \' represent!\'
return_dict[procnum] = procnum

if name == \' main \':
manager = Manager()
return_dict = manager.dict()
jobs = []
for i in range(5):
p = multiprocessing.Process(target=worker, args=(i,return_dict))
jobs.append(p)
p.start()

2
p = multiprocessing.Pool(1)
rslt = p.map(test,(\'world\',))
print rslt

pythonNet 04多进程

fork注意:
*进入阻塞态的进程一定会让出cpu时间片
*各个进程在自己空间内对数据的操作不影响其他进程
*父进程在执行fork之前开辟的空间子进程也会复制

进程相关函数

os.getpid()
功能获取当前进程的PID号
返回值:返回当前进程的PID

os.getppid()
功能;获取父进程的PID号
返回值:返回父进程PID

os._exit(status)
功能:退出程序
参数:整数 表示自定义的进程退出状态标识

sys.exit([status])
功能:退出进程
参数:整数 表示退出状态 默认为0
        传一个字符串,则退出时会打印该字符串


孤儿进程和僵尸进程

孤儿进程;父进程先于子进程退出,则子进程成为孤儿进程

*孤儿进程会被系统进程收养,此时系统进程就好成为该进程父进程

僵尸进程:子进程先于父进程退出,父进程没有处理子进程退出状态,此时子进程就会成为僵尸进程

*僵尸进程虽然结束但是会存留部分PCB在内存,大量的僵尸进程会占用内存资源


如何避免僵尸进程产生
    *处理自己成退出状态
    pid,status =os.wait()
    功能;在父进程中阻塞等待子进程退出
    返回值:pid 退出的子进程的PID
            status 子进程退出状态


    pid,status =os.waitpid(pid,option)
    功能;在父进程中等待子进程退出
    参数:pid -1 表示等待任意子进程
             >0 表示等待指定PID的子进程退出
          option 0表示阻塞等待
                WNOHANG 表示非阻塞
    返回值:pid 退出的子进程的PID
            status 子进程的退出状态

    创建二级子进程
    1.父进程创建子进程等待子进程退出
    2.子进程创建二级子进程然后退出
    3.二级子进程成为孤儿,和原来父进程各自执行任务

 

 

 































以上是关于python 多进程获取返回值的主要内容,如果未能解决你的问题,请参考以下文章

python多进程,并获取每个进程的返回值

Python多处理:如何创建x个进程并返回返回值

pythonNet 04多进程

python的线程如何返回值?

如何使用线程去执行一个 有返回值的方法,并获取返回值?

python 获取subprocess进程执行后返回值