进程池的返回值

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == ‘__main__‘:
#     pool = Pool(4)
#
#     for i in range(10):
#         ret = pool.apply(func, args=(i, ))  # 同步任务调用的任务的返回值,一个任务执行完后才能执行下一个任务,直接就是func的返回值
#         print(ret)    # 直接打印任务返回值的结果
#

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == ‘__main__‘:
#     pool = Pool(4)
#
#     for i in range(10):
#         ret = pool.apply_async(func, args=(i, ))  # 异步提交任务调用的任务的返回值,返回值得到的是一个任务的返回结果对象
#         #print(ret)  # 不调用get方法,直接打印的就是得到任务的返回结果对象
#         print(ret.get())    # 调用返回结果的对象的get方法会同步阻塞等待每个任务执行结束后返回的结果
#

# import time
# from multiprocessing import Pool
#
# def func(i):
#     time.sleep(1)
#     return i * i
#
#
# if __name__ == ‘__main__‘:
#     pool = Pool(4)
#     ret_l = []
#     for i in range(10):
#         ret = pool.apply_async(func, args=(i, ))  # 异步提交任务调用的任务的返回值,返回值得到的是一个任务的返回结果对象
#         ret_l.append(ret)
#
#     for ret in ret_l:
#         print(ret.get())    # 阻塞得到进程池中每个任务的返回值,先执行完的任务,则先得到执行完任务的返回值并打印出来

import time
from multiprocessing import Pool

def func(i):
    time.sleep(1)
    return i * i

if __name__ == ‘__main__‘:
    pool = Pool(4)
    ret = pool.map(func, range(10)) # 异步执行10个任务,阻塞等待每个任务执行完毕将返回值返回放到了ret列表中
    print(ret)  # [0, 1, 4, 9, 16, 25, 36, 49, 64, 81]  # 一次性打印出上面阻塞等待的10个任务的返回值

原文地址:https://www.cnblogs.com/whylinux/p/9833152.html

时间: 2024-11-07 22:06:16

进程池的返回值的相关文章

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

test.py #coding=utf-8 import subprocess compilePopen = subprocess.Popen('gcc haha',shell=True,stderr=subprocess.PIPE) compilePopen.wait() print('the status code is:',compilePopen.returncode) with open('log','w') as object: object.write(compilePopen.s

Python进程锁和进程池

进程锁 进程与进程之间是独立的,为何需要锁? 对于进程,屏幕的输出只有一个,此时就涉及到资源的竞争.在Linux的Python2.x中可能出现问题. 这仅仅是一种情况,多个进程之间虽然是独立的,但仅限于内存和运算,如果涉及到其它一些资源, 就可能存在竞争问题,在实际使用过程中要注意思考和防范错误. from multiprocessing import Process, Lock def func(lock, i):     lock.acquire()     print("hello,&qu

Java多线程和并发(四),线程返回值获取方式和Callable接口

目录 1.主线程等待法 2.使用Thread类的join()阻塞当前线程,等待子线程执行完毕 3.通过Callable接口实现:通过FutureTask Or线程池获取 四.线程返回值获取方式和Callable接口 1.主线程等待法 public class CycleWait implements Runnable{ private String value; @Override public void run() { try { Thread.currentThread().sleep(50

java线程池的自带监控,线程池返回值的控制

当使用java线程池的时候,返回值类型用future<T> 来接收,比如: Future<String> future = fixedThreadPool.submit(new Thread());返回的结果必须由线程执行完毕后才会返回,我们可以利用这一点进行线程堵塞,监控线程的结束时间. package com.test; import java.util.ArrayList; import java.util.List; import java.util.concurrent.

wait函数返回值总结,孤儿进程与僵尸进程[总结]

http://blog.csdn.net/astrotycoon/article/details/41172389 wait函数返回值总结 http://www.cnblogs.com/Anker/p/3271773.html 孤儿进程与僵尸进程[总结]

Java线程池,获取返回值

程序中使用的是Callable接口,可以获取线程的返回值. package liuzh; import java.util.LinkedList; import java.util.List; import java.util.concurrent.Callable; import java.util.concurrent.ExecutionException; import java.util.concurrent.Future; import java.util.concurrent.Lin

Java中有返回值的线程,(缓存)线程池的初步使用

一 简介 在JDK1.5以前的线程是没有返回值的(Thread,Runnable),Callable这个接口是之后才出现的新特性,用法跟Runnable类似,只是不同的是可以有返回值.因此为了测试Callable这个类以及线程池相关内容,我将上一篇文章中的代码进行了小幅度的修改然后写了一下 二 关于线程池的简单使用步骤 1 定义线程类,(1)extends Thread (2)implements Runnable (3)implements Callable<> 2 建立ExecutorSe

如何接收线程池执行后的返回值

时间紧迫,先简单记一下 首先定义一个返回值的接受类 package com.lz.car.facade.dto; import java.io.Serializable; import com.fasterxml.jackson.annotation.JsonIgnore; public class MessageDto implements Serializable{ /** * 接口返回内容 */ private static final long serialVersionUID = 84

Python 3 进程池与回调函数

Python 3 进程池与回调函数 一.进程池 在利用Python进行系统管理的时候,特别是同时操作多个文件目录,或者远程控制多台主机,并行操作可以节约大量的时间.多进程是实现并发的手段之一,需要注意的问题是: 很明显需要并发执行的任务通常要远大于核数 一个操作系统不可能无限开启进程,通常有几个核就开几个进程 进程开启过多,效率反而会下降(开启进程是需要占用系统资源的,而且开启多余核数目的进程也无法做到并行) 例如当被操作对象数目不大时,可以直接利用multiprocessing中的Proces