python 多进程模块concurrent

拿进程返回值

from concurrent.futures import ProcessPoolExecutor
import time,os,random
 
def piao(name,n):
    print("%s is piaoing %s"%(name,os.getpid())) # 打印了端口号
    time.sleep(random.randint(2,3))
    return n*2
if __name__ == "__main__":
    p = ProcessPoolExecutor(4) # 指定进程池最大进程个数
    objs = []
    for i in range(10):
        # 这属于同步调用,要等到obj拿到结果后才会执行之后的代码
        # obj = p.submit(piao,"alex %s"%i,i).result()
        # print(obj)
        # 异步调用
        obj = p.submit(piao,"alex %s"%i,i) # 这里只提交进程,并不拿到他们的结果,并且把进程赋值给一个变量
        objs.append(obj) # 把进程追加进列表中
    for obj in objs:
        print(obj.result()) # 从列表中拿到进程的返回值
        # 这里提交进程时并不会遇到阻塞,进程池中的四个进程是同时运行的,一个进程运行完,就会有另一个进程开始运行
        # 在拿结果的时候可能有一个没有运行完但他后面的就运行完了,他不会跳过去取结果,会等待结果出来,这时后面的
        # 结果是计算出来的所以不用等待就能拿到结果
 
 
    p.shutdown(wait=True)
    print("哈哈哈哈")
    ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值