我有一个计算斐波那契数的函数。我正在尝试添加一个特性,该特性发送一个信号,指示我需要暂停正在运行的函数。一旦我得到信号,我就把迄今为止计算出的所有数字都存储起来。你知道吗
当用户想要恢复该功能时,我可以加载文件并从停止的位置开始计算。你知道吗
这是我的密码
MAX = 100000
fibo_series = [0] * MAX
import pickle
def fib(start_value=0, stop_value=1000, stop_signal=False):
if not stop_signal:
for i in range(start_value, stop_value):
if i == 0:
fibo_series[i] = 0
elif i == 1 or i == 2:
fibo_series[i] = 1
else:
fibo_series[i] = fibo_series[i-1] + fibo_series[i-2]
return fibo_series[i]
else:
with open('fibo_series.pkl', 'wb') as f:
pickle.dump(fibo_series, f)
def reload_fib():
with open('fibo_series.pkl', 'rb') as f:
fibo_series = pickle.load(f)
start_value = fibo_series[1:].index(0) + 1
stop_value = len(fibo_series)
return fib(start_value, stop_value, stop_signal=False)
我不知道的部分是,一旦函数开始运行,如何使用这个stop_signal
。函数启动后,值stop_signal
被锁定。我知道暂停一个函数的唯一方法是终止它,这不是我想做的。你知道吗
我如何做到这一点?你知道吗
我不确定停止和运行的条件是什么,但是一个简单的解决方法是为这两个函数使用一个全局变量。这并不比使用线程库的锁好,但是如果您的工作只是使用一个进程,并且不需要复杂度,那么您可以尝试。你知道吗
然后,每当用户想要停止执行时,就可以设置全局变量
stop_signal=True
输出为:
我希望这有帮助。你知道吗
相关问题 更多 >
编程相关推荐