我正在尝试将变量的内容传递给作为线程运行的类中的函数。我该怎么做?以下是一些应该具有以下输出的伪代码。有问题的变量是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
请注意,此代码只是一个示例,我实际上并没有执行过度杀伤。这是一个普遍的问题,但我的具体应用是让它监听该范围内的端口。
答案 0 :(得分: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
答案 1 :(得分: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:作为附注,由于您使用多线程,因此您不能假设输出将按照您在示例中显示的顺序进行。