Python多线程/多进程操作队列

最近在做深度学习,需要采用多进程的方式实现数据处理。为了实现数据的快速处理,我先后尝试了把数据一口气读入内存、多线程和多进程的方式。当然,肯定是多进程双队列的方式最好,因为可以充分利用多核和cpu。

一般来说导入队列可以这样操作:

import Queue
myqueue = Queue.Queue(100)

但是这种队列不是同步队列,在多进程中不能用于通信。

在多进程中,需要这样使用:

from multiprocessing import Process, Queue
myqueue = Queue(100)


举一个例子:

#! /usr/bin/env python

from multiprocessing import Process, Queue
from time import sleep

def pro1(num):
    num.put([1,1])

def pro2(num):
    sleep(2)
    print num.qsize()

if __name__ == '__main__':
    num = Queue()
    process1 = Process(target = pro1, args = (num,))
    process1.start()
    process2 = Process(target = pro2, args = (num,))
    process2.start()


结果为:1
而使用多线程,则方法如下:

#! /usr/bin/env python

import threading
from time import sleep
import Queue

def pro1():
    num.put([1,1])

def pro2():
    sleep(2)
    print num.qsize()

if __name__ == '__main__':
    num = Queue.Queue()
    thread1 = threading.Thread(target = pro1)
    thread1.start()
    thread2 = threading.Thread(target = pro2)
    thread2.start()

结果为:1

当然,tensorflow等深度学习框架的数据输入还是应该通过多进程的方式实现。这个后续再说。





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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值