首先,我有两个python脚本。让我们看看
#Script1.py
import time
i = 0
while True:
i = i+1
print(i)
time.sleep(1)
#Script2.py
from script1 import i
print(i)
第二,我运行Script1
Result of Script1
1
2
3
.
.
然后,连续运行Script2
Result of Script2
1
2
3
.
.
问题是我希望Script2打印Script1的当前值,而不是重新运行Script1,如:
Run Script1 :
1
2 Run Script2 :
3 3
4 4
5 5
谢谢你的回答!
可以使用线程并行运行。考虑以下代码:
from time import sleep
from threading import Thread
class Task(Thread):
i = 0
def run(self):
while True:
self.i += 1
sleep(1)
t = Task()
t.start()
sleep(5)
print(t.i)
这里的主要问题是每次导入模块Script1时都会调用该模块中的所有代码。这意味着导入模块与运行模块具有相同的效果。
处理这个问题的一种常用方法是添加以下语句,除非模块直接运行,否则它将阻止执行:# Script1
import time
if __name__ == '__main__':
# ...
然而,从您期望的输出来看,您似乎希望在第一个正在运行的脚本运行时读取它。这里的代码不会实现这一点,因为它是阻塞的(也就是说,它不会屈服于其他请求,它将完全执行,在这种情况下,永远执行,在它让其他任何事情发生之前)。