2016-12-16 3 views
0

私はスレッドとしての機能を実行するスクリプトを持っています。この関数は、メインからの辞書の内容で動作しますが、変更する必要はありません。例えば辞書オブジェクトをその値ではなくスレッドとして機能させるために渡す

from threading import Thread 

def a_func(self, dic): 
    print(str(dic)) 

some_dic={ 
    1:"A", 
    2:"B" 
} 

print(str(some_dic)) 

t = Thread(target=a_func, args=(some_dic)) 
t.start() 

出力結果は次のとおりです。

{1: 'A', 2: 'B'} 
2 

私は、スレッド関数に渡される最初の引数は、それ自体であることを読んだ - 私はそれを誤解しましたか?

selfの問題がなくても、この場合はキーではなく、実際の辞書オブジェクトが印刷されません。

どのように私は出力が得られ、ねじ切り機能にDictionaryオブジェクトを渡します:

{1: 'A', 2: 'B'} 
{1: 'A', 2: 'B'} 
+1

あなたは、引数の*タプル*を渡すようにしようとしていましたか? '...、args =(some_dic、)を試してください)' – jonrsharpe

+0

は全く同じ出力を返します。 – SaAtomic

+1

申し訳ありませんが、括弧を忘れました。私は明確にしました。それをタプルにする末尾のカンマに注意してください。 – jonrsharpe

答えて

1

引数は、あなたは、その辞書を渡すために、関数のすべての引数のタプルことになっています辞書のタプルが必要です。

さらに、Pythonでは、カッコで式を折り返すことと区別するために、1つの要素を含むタプルに余分なカンマを追加する必要があります。

さらに、なぜあなたは機能で自己を使用していますか? このコードは動作するはずです:

from threading import Thread 

def a_func(dic): 
    print dic 

some_dic={ 
    1:"A", 
    2:"B" 
} 

print(str(some_dic)) 

t = Thread(target=a_func, args=(some_dic,)) 
t.start() 
関連する問題