多个python文件之间变量共享问题
本帖最后由 51Arduino32 于 2022-1-17 22:10 编辑鱼友们,如下图,我想在 a.py 里拿到 正在运行的 b.py 里的 count 变量值(先运行b.py,再运行a.py),有什么好方法吗, 我试过去掉 b.py 里的 if__name__=="__main__";虽然这时候运行 a.py 拿到的count值不是0,但也不是 b.py 中的 count 值(也是先运行b.py,再运行a.py),他是重新 0 开始的, 如图二,来求助一下
以下是两个代码的内容:
a.py
# a.py
import b
import time
if __name__=="__main__":
while 1:
count = b.count # 获取b.py 里面的 count变量值
print("count is {}".format(count))
time.sleep(1)
b.py
# b.py
import a
import time
count = 0
class A:
def __init__(self):
self.count=0
def add(self):
global count
self.count+=1
def getCount(self):
return self.count
if __name__=="__main__":
s = A()
while 1:
s.add()
count = s.getCount()
print("count is {}".format(count))
time.sleep(1) 我感觉难,你运行a,a是一个进程,同理b运行时是另一个进程
你要做到a访问正在运行b的变量,那要能做到进程之间的资源共享 这样是无法实现的吧,变量无非就是内存空间的名字,不同进程的内存是不能互访的,要想共享某些值就得通过进程通信的方式,使用网络IO或者文件IO 没拿到鱼币{:10_266:} 80概率很小吗?还是我太黑了{:10_243:}{:10_243:} 拿个文件存储一下
# a.py
import time
import pickle
if __name__=="__main__":
while 1:
count = pickle.load(open('count','rb')) # 获取b.py 里面的 count变量值
print("count is {}".format(count))
time.sleep(1)
# b.py
import time
import pickle
count = 0
class A:
def __init__(self):
self.count=0
def add(self):
global count
self.count+=1
def getCount(self):
pickle.dump(self.count,open('count','wb'))
return self.count
if __name__=="__main__":
s = A()
while 1:
s.add()
count = s.getCount()
print("count is {}".format(count))
time.sleep(1)
isdkz 发表于 2022-1-17 21:32
80概率很小吗?还是我太黑了
现在有了 先不说,为啥要分a,b 两个模块。 你要先练习一些基本的面向对象的小题目,先理解 类和实例,类变量、实例变量和方法 等基本概念呀。。
解决:
# a.py
import b
import time
if __name__ == "__main__":
s = b.A() # 使用(创建)b模块里的 A类的实例对象
while 1:
s.add()
count = s.getCount()
print("count is {}".format(count))
time.sleep(1)
------------------------------
# b.py
class A:
def __init__(self):
self.count = 0
def add(self):
self.count += 1
def getCount(self):
return self.count
if __name__ == "__main__":
pass
谢谢,谢谢大佬 谢谢大家的回答,非常感谢{:5_108:} {:5_109:} {:10_254:} {:10_256:} {:10_281:} {:10_298:} {:10_254:} 谢谢,谢谢大佬 不会也能混鱼币的么{:10_266:} {:10_254:} {:10_257:}{:10_257:}{:10_257:}
页:
[1]
2