[英]How to obtain the value of argument from while loop using threading?
我正在嘗試獲取參數(self.num)的變化值,每次我需要它時,它都會在單獨線程的while循環中發生變化。 但是,我總是只得到零。
from time import sleep
from threading import Thread
class Number:
def __init__(self):
self.num = 0
def trend(self):
while 1:
self.num += 1
def trend1(self):
return self.num
if __name__ == '__main__':
while 1:
Thread(target=Number().trend).start()
print(f"{Number().trend1()=}")
sleep(0.1)
print(f"{Number().trend1()=}")
Thread 中定義的第一個Number永遠不能被引用。 此外,在您的 while 循環中,您定義了另外 2 個與線程無關的Number 。
您只需要一個號碼即可完成這項工作:
if __name__ == '__main__':
number = Number() # save an Number() object as param
th = Thread(target=number.trend) # create a Thread for its trend()
th.daemon = True # (optional) Thread dies with code
th.start() # start the Thread
while 1:
print(f"{number.trend1()=}") # call the trend1() in number
sleep(0.1)
print(f"{number.trend1()=}")
現在, number為線程和計數器保存 Number() object。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.