从Python 3中的线程处理函数返回变量

时间:2014-07-15 09:27:29

标签: python multithreading python-3.x arguments return

我正在处理一个更新主进程变量的线程。由于我没有成功通过论证,我不得不使用全局。但我不喜欢它,它不安全。有没有办法没有使用全球?

我可以传递参数,但问题在于返回的对象。

我的代码:

#!usr/bin/python3
# -*- coding: UTF-8 -*-

import threading
import time

my_check = " CHECK "    # TODO replace with initial source data.

class MiThread(threading.Thread):   
    def __init__(self):
        threading.Thread.__init__(self)

    def run(self):  
        time.sleep(5)
        print("I'm the SECOND thread")
        global my_check
        my_check = " CHECK DONE!!!" # TODO replace with the updated source data.
        self.run()

print ("I'm the principal thread.")

t = MiThread()     
t.start()       
#t.join(1)        

while True:
    time.sleep(0.5)
    print("I'm the principal thread, too." + my_check)

这只是一个概念证明,我真的想在tkinter标签中编写一个小股票代码显示器,我需要,至少还有两个线程:更新程序线程(用于更新要显示的信息)和显示器线程(它必须每0.3秒改变标签的文字。)

1 个答案:

答案 0 :(得分:1)

您可以将线程执行的结果存储在线程对象的实例变量中:

import threading
import time

class MiThread(threading.Thread):   
    def __init__(self):
        self.my_check = " CHECK "
        threading.Thread.__init__(self)

    def run(self):  
        time.sleep(5)
        print("I'm the SECOND thread")
        self.my_check = " CHECK DONE!!!"

print ("I'm the principal thread.")

t = MiThread()     
t.start()         

while True:
    time.sleep(0.5)
    print("I'm the principal thread, too." + t.my_check)