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 回答