【问题标题】:Pass variable contents to class function in Python将变量内容传递给Python中的类函数
【发布时间】:2023-03-15 03:35:01
【问题描述】:

我正在尝试将变量的内容传递给作为线程运行的类中的函数。我该怎么做?以下是一些应具有以下输出的伪代码。有问题的变量是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

请注意,此代码只是一个示例,我实际上并没有矫枉过正。这是一个普遍的问题,但我的具体应用是让它监听该范围内的端口。

【问题讨论】:

    标签: python class variables python-2.7


    【解决方案1】:

    通过构造函数传递它。

    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
    

    【讨论】:

      【解决方案2】:

      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
      

      Référence

      Ps:附带说明一下,由于您使用的是多线程,因此您不能假设输出会像您在示例中显示的那样按顺序排列。

      【讨论】:

        猜你喜欢
        • 2023-04-08
        • 1970-01-01
        • 1970-01-01
        • 2016-01-15
        • 2017-04-15
        • 1970-01-01
        • 1970-01-01
        • 2022-01-14
        • 1970-01-01
        相关资源
        最近更新 更多