0

私のソフトウェアで Python 2.5.5 を使用しているときに、このエラーが発生しました。どうしてですか?_empty はキューから消えましたか? 私はこれをまったく理解していません。私は queue から継承しませんでした。Queue クラスの通常のインスタンスだけがあります。私のマシンではすべて正常に動作しているように見えますが、顧客のマシンではエラーが発生しました。何が問題なのか、誰かアドバイスをいただけますか?

ここで問題が発生しました:

import Queue

self.requests.mutex.acquire()
allCount = self.requests._qsize()
while not self.requests._empty():
    try:
        (sock, addr, _) = self.requests._get()
        # ... do some things
self.requests.mutex.release()

以前は、キューは次のように初期化されていました

self.requests = Queue(self.reqQLen)

また、これらのキュー メソッドもモジュールで使用されます: put_nowait、qsize、get。キューは、マルチスレッドのコンテキストで使用されます。これが原因でしょうか?

私は疑問に思っています:エラーメッセージは、変数requestsがキューインスタンスとして認識されていることを示していますが、属性 _empty はそこにありません。ただし、これは Queue クラスの通常のメソッドです。

4

1 に答える 1

5

私はこれにあまり詳しくありません (そして、あなたが使用している Python のバージョンもわかりません) が、ドキュメントを見ると、属性についての言及はなく、メソッド_emptyのみが表示されます。empty()先頭のアンダースコアはプライベート属性を示すために使用されているため、その存在は標準化されておらず、実装に依存しているように思われ、empty()代わりにメソッドを使用することが正しい解決策になると思われます。

于 2011-03-07T15:21:06.420 に答える