我正在使用SimpleQueue
中的multiprocessing.queues
类。我的程序工作正常,直到我有异常终止。现在每当我运行它时,它会在执行任何put
调用之前在get
调用时冻结。我的猜测是SimpleQueue
使用的文件或类似的东西作为基础通信方法,它已被破坏。
有关如何让SimpleQueue
重新开始工作的任何想法?最好不要重新启动计算机,它是一台共享机器,有多个人同时处理它。
答案 0 :(得分:1)
你正在检查put(obj [,block [,timeout]])
把obj放入队列。如果是可选的 参数块为True(默认值),超时为None( 默认情况下,必要时阻止,直到有空闲插槽可用。
queue.full()
吗?
答案 1 :(得分:1)
对我来说,SimpleQueue.put()
似乎在我拨打很多电话时冻结,这可能是问题吗? (OS X,Anaconda,2.7.10)
In [1]: from multiprocessing.queues import SimpleQueue
...: from time import time
...:
...: def put_jobs(n):
...: q = SimpleQueue()
...: t0 = time()
...: for i in xrange(n):
...: q.put((i, (42, 0)))
...: print '%.3f' % (time() - t0)
...:
In [6]: put_jobs(1000)
0.004
In [7]: put_jobs(1000)
0.004
In [8]: put_jobs(2000)
0.007
In [9]: put_jobs(3000)
0.010
In [10]: put_jobs(4000)
(不会回来几分钟)