我有一个正在运行的脚本,但是有挂起的趋势。我正在尝试制作另一个脚本来使用线程运行它,但是自动重启功能似乎不起作用。
我希望此脚本执行的操作是每900秒重新启动一次功能,或者在可能的情况下在挂起时重新启动该功能。
import time
import threading
import os
import functionname
def restart():
time.sleep(900)
os.execl('currentfilepath')
def res():
while True:
try:
# do your works
t = threading.Thread(target=restart, args=(), name='reset')
t.start()
functionname()
except:
print('error')
finally:
print('done')
if __name__ == '__main__':
res()
答案 0 :(得分:0)
所以我设法找到一种解决方法。
import multiprocessing
import time
t=600 # time to wait
def bar():
# do stuff
def barn():
for i in range(t*500): # runs for 500 times
# print ("Tick"+str(i)+'n') # just for tracking progress
time.sleep(1)
if i % t == 0:
print('restarting')
p = multiprocessing.Process(target=bar)
p.terminate
p = multiprocessing.Process(target=bar)
p.start()
if __name__ == '__main__':
p = multiprocessing.Process(target=bar)
p.start()
p1 = multiprocessing.Process(target=barn)
p1.start()
可能不是最优雅的,但是,它起作用了。
答案 1 :(得分:0)
您的回答有效,但似乎是一次性的;在我的系统上,它在 1 次后停止运行。我将代码更改为使用 while 循环;现在它可以在我的系统上运行了:
def barn():
p = multiprocessing.Process(target=bar)
p.start()
i = 0
while(t > i):
print("running for " + str(i))
i += 1
time.sleep(1)
if i == t:
print('restarting')
p = multiprocessing.Process(target=bar)
p.terminate
p = multiprocessing.Process(target=bar)
p.start()
i = 0