python进程process类返回值_如何从Process或Thread实例返回值?

您将需要一个multiprocessing.Pipe或multiprocessing.Queue将结果发送回您的父进程.如果你只做I / 0,你应该使用Thread而不是Process,因为它更轻巧,大部分时间花在等待上.我告诉你一般来说Process和Threads是如何完成的.

处理队列

多处理队列构建在管道之上,访问与锁/信号量同步.队列是线程和进程安全的,这意味着您可以将一个队列用于多个生产者/消费者进程,甚至可以在这些进程中使用多个线程.添加队列中的第一个项目也将在调用进程中启动馈送器线程. multiprocessing.Queue的额外开销使得使用管道为单生产者/单一消费者场景更好,更高性能.

以下是使用multiprocessing.Queue发送和检索结果的方法:

from multiprocessing import Process, Queue

SENTINEL = 'SENTINEL'

def sim_busy(out_queue, x):

for _ in range(int(x)):

assert 1 == 1

result = x

out_queue.put(result)

# If all results are enqueued, send a sentinel-value to let the parent know

# no more results will come.

out_queue.put(SENTINEL)

if __name__ == '__main__':

out_queue = Queue()

p = Process(target=sim_busy, args=(out_queue, 150e6)) # 150e6 ==

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值