2016-11-14 15 views
1

次のコードはリスト(varbinds)を渡し、正常に動作します。Pythonスレッドで複数の引数を渡す

t1 = threading.Thread(target = Main2_TrapToTxtDb, args = (varBinds,)) 

今私は別の変数を渡す必要があり - これに伴いをVSTRING。

簡単なコードでお手伝いください。

+0

何か試しましたか? –

+0

t1 = threading.Thread(target = Main2_TrapToTxtDb、args =(varBinds、))....私が知っているすべて。 Google検索でkwargsが表示され、把握が難しいようです。 – Manmathan

+0

'args =(varBinds、vString)' – furas

答えて

3

argsパラメータは、引数のタプルです。あなたはそれに多くの議論を渡すことができない場合、そのポイントは何ですか?

t1 = threading.Thread(target=Main2_TrapToTxtDb, args=(varBinds, otherVariable)) 

しかし、あなたは以下の通りの抽出物である、the documentationで素早く見ている可能性があり:

クラスthreading.Thread(グループ=なし、目標=なし、名前=なし、引数=( )、 kwargs = {})

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

グループは[なし]です。 ThreadGroupクラスが実装されているときに将来の拡張用に予約されています。

targetは、run()メソッドによって呼び出される呼び出し可能オブジェクトです。デフォルトはNoneで、何も呼び出されないことを意味します。

名前はスレッド名です。デフォルトでは、一意の名前は "Thread-N"という形式で構成され、Nは小数点以下の桁数です。

argsは、ターゲット呼び出しの引数タプルです。デフォルトは()です。

kwargsは、ターゲット呼び出しのキーワード引数の辞書です。デフォルトは{}です。

+0

ありがとうございます。しかし、varbindsはリストです。だから、変数の後の括弧...(varBinds、)。したがって、追加の変数を追加する構文は、リスト変数の後に追加されます。私は混乱しているように感じる。 – Manmathan

+0

@Manmathan私はあなたが何をしているのか分からないと思います。 'varBinds'はリストなので、どうですか?それは議論のリストですか?型が 'list'の引数ですか? 'vString'を含む引数のリストを渡しますか?その場合は、単に 'varBinds'に追加してください。 –

+0

@Manmathan私はあなたがエラーを受け取り、カンマがそれを取り除いたことに気がついたので、コンマを追加したと思います。 'args'パラメータは' tuple'を受け取りますが、引数が1つだけの場合は '(argument)'を書くことはできません。なぜなら、これはタプルではない 'argument'として解析されるからです。したがって、コンマを入れなければならないので、 '(argument、)'というタプルとして解釈されます。このタプルはあなたがスレッドの関数に渡す引数を含むことを意図しているので、答えに書いたように、すべての引数をタプルに入れてください: '(arg1、arg2、arg3、arg4)'。 –

関連する問題