为什么这个队列的行为如下?

时间:2015-12-10 22:05:32

标签: python-2.7 python-multiprocessing

我正在编写一个从多处理队列中抽取的对象,我发现当我运行此代码时,我得到Dim Directory As String Dim MyFile As Variant Dim MyFolder As String Dim i As Long iYesNo = MsgBox("Do the patients and barcode match the setup sheet?", vbYesNoCancel) Select Case iYesNo Case vbYes GoTo Line2 Case vbNo MsgBox ("Doesn't match! Please enter again") MyFolder = Directory ' delete all txt files in the folder MyFile = MyFolder & "*.txt" For i = LBound(MyFile) To UBound(MyFile) Kill MyFolder & MyFile(i) Next RmDir Directory ' delete folder GoTo Line1 End Select 。然而,如果我告诉程序在所指的位置稍微睡一会儿,我会得到data = []

data = [1,2]

**编辑:**如果在while循环之前有一个print语句,也会发生这种情况。这告诉我,调用q.put()时会发生一些事情,但我无法找到有关此问题的任何文档。

1 个答案:

答案 0 :(得分:0)

docs中提到了multiprocessing.Queue

  

注意当一个对象被放入一个队列时,该对象被腌制并且一个   后台线程稍后将pickle数据刷新到底层   管。这有一些后果,但有点令人惊讶   不应该造成任何实际困难 - 如果他们真的很烦   然后,您可以改为使用由经理创建的队列。

     
      
  1. 后   将对象放在空队列中可能存在无穷小   队列的empty()方法返回False和get_nowait()之前的延迟   可以在不提高Queue.Empty的情况下返回。   ...
  2.