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

来源:互联网 发布:软件企业即征即退期限 编辑:程序博客网 时间:2024/05/22 04:52

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

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

import Queuemyqueue = Queue.Queue(100)

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

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

from multiprocessing import Process, Queuemyqueue = Queue(100)


举一个例子:

#! /usr/bin/env pythonfrom multiprocessing import Process, Queuefrom time import sleepdef 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 pythonimport threadingfrom time import sleepimport Queuedef 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等深度学习框架的数据输入还是应该通过多进程的方式实现。这个后续再说。





原创粉丝点击