簡體   English   中英

將變量內容傳遞給Python中的類函數

[英]Pass variable contents to class function in Python

我正在嘗試將變量的內容傳遞給作為線程運行的類中的函數。 我該怎么做? 以下是一些應該具有以下輸出的偽代碼。 有問題的變量是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

請注意,此代碼只是一個示例,我實際上並沒有執行過度殺傷。 這是一個普遍的問題,但我的具體應用是讓它監聽該范圍內的端口。

通過構造函數傳遞它。

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

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:作為附注,由於您使用多線程,因此您不能假設輸出將按照您在示例中顯示的順序排列。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM