53

私はPythonでいくつかの簡単なスレッドを実行しようとしています:

t1 = threading.Thread(analysis("samplequery"))
t1.start()

other code runs in here

t1.join()

残念ながら、エラーが発生します。

「AssertionError:グループ引数は今のところnoneでなければなりません」

私はこれまでPythonでスレッドを実装したことがないので、何が問題になっているのか少しわかりません。誰かが問題が何であるかを知っていますか?

関連性があるかどうかはわかりませんが、分析は別のファイルからインポートされたメソッドです。

フォローアップクエリも1つありました。分析は辞書を返しますが、元のメソッドで使用するためにそれを割り当てるにはどうすればよいですか?

ありがとう

4

2 に答える 2

72

target代わりにキーワード パラメータを指定します。

t1 = threading.Thread(target=analysis("samplequery"))

おそらくanalysis実行ターゲットを作成するつもりでしたが、開始時'samplequeryの引数は次のとおりです。

t1 = threading.Thread(target=analysis, args=("samplequery",))

への最初のパラメーターThread()group引数であり、現在Noneは引数としてのみ受け入れます。

threading.Thread()ドキュメントから:

このコンストラクターは、常にキーワード引数を指定して呼び出す必要があります。引数は次のとおりです。

  • グループは次のようになりNoneます。ThreadGroupクラスが実装されるときの将来の拡張のために予約されています。
  • targetrun()は、メソッドによって呼び出される呼び出し可能なオブジェクトです。デフォルトはNoneで、何も呼び出されないことを意味します。
于 2013-03-11T22:37:52.140 に答える
7

target次の属性を指定する必要があります。

t1 = threading.Thread(target = analysis, args = ('samplequery',))
于 2013-03-11T22:38:24.943 に答える