我正在处理一个更新主进程变量的线程。由于我没有成功通过论证,我不得不使用全局。但我不喜欢它,它不安全。有没有办法没有使用全球?
我可以传递参数,但问题在于返回的对象。
我的代码:
#!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秒改变标签的文字。)
答案 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)