1

変数の内容を、スレッドとして実行されるクラス内の関数に渡そうとしています。どうすればいいですか?以下は、出力が次のようになるはずの疑似コードです。問題の変数はp_number.

擬似

class sessioning(Thread):    
    def run(self, p_number):
        print p_number    


p_number = 50885
for i in xrange(30):
    sessioning().start(p_number)         
    p_number+=1

必要な出力

50885
50886
50887
50888
50889
50890
50891
50892
50893
50894
50895
... Numbers in-between
50914
50915

このコードは単なる例であり、実際にやり過ぎを行っているわけではないことに注意してください。これは一般的な質問ですが、私の特定のアプリケーションは、その範囲内のポートでリッスンすることです。

4

2 に答える 2

4

コンストラクタ経由で渡します。

class Sessioning(Thread):
    def __init__(self, p_number):
         Thread.__init__(self)
         self._pn = p_number

    def run(self):
        print(self._pn)

p_number = 50885
for i in xrange(30):
    Sessioning(p_number).start()
    p_number += 1
于 2013-06-03T10:19:41.550 に答える
0

Thread クラスには、引数を指定して関数を呼び出す簡単な方法が既に実装されています。

簡単な例を次に示します。

def say_hi(name):
    print "hello", name

Thread コンストラクターを使用して、位置または名前で引数を渡すことができます。

from threading import Thread
a = Thread(target=say_hi, args=("byposition",))
a.run()
b = Thread(target=say_hi, kwargs={"name": "byname"})
b.run()

これは正しく出力されるはずです:

hello byposition
hello byname

参照

Ps: 補足として、マルチスレッドを使用しているため、例で示したように出力が順番に来るとは想定できません。

于 2013-06-03T10:59:27.373 に答える