簡體   English   中英

如何使用線程從while循環中獲取參數的值?

[英]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.

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