我创建了一个预测程序,它从python中获取一个numpy数组,并在R的接口中填充此信息。 R使用此信息生成预测。经过计算,数组将被发送回python。
我的问题是在R和Python的过程中出现问题等待答案,但它没有来。
我想使用超时,如果python在10秒内没有得到R的反馈,那么预测应该是0或“除了循环”。
附件是我目前的代码。我为没有反馈的错误发生的每一行都做了一个跳跃。这种技术需要很长时间才能识别出有问题的所有行... 我还使用“except loop”来解决程序中出现的错误,程序可以解决这个问题。
def r_x13(bers, fc):
r = pr.R(RCMD='/usr/local/bin/R', use_numpy=True)
r('library("seasonal")')
if not (type(bers) is np.array):
bers = np.array(bers)
res = []
start_time = time.time()
forbidden = [23975, 24733, 24735]
for index, ber in enumerate(bers):
if not(index in forbidden):
res.append(single_r_x13(ber,fc,r,index))
else:
res.append([np.nan] * fc)
print("---------%s sekunden fuer Arima %s ------" % (((time.time() - start_time)/ (index + 1)), index))
return res#np.array([single_r_x13(ber,fc,r) for ber in bers])
def single_r_x13(ber,fc,r,c):
try:
print ber
r.assign("rdata%s" % c, ber)
ts_str = "my_ts%s <- ts(rdata%s, start=c(2012, 1), end=c(2014,12), frequency=12)" % (c,c)
r(ts_str)
r("ar%s <- seas(my_ts%s, forecast.save = 'forecasts')" % (c,c))
r("res%s <- series(ar%s, 'forecast.forecasts')" % (c,c))
#print(r('res%c'))
forecast = r.get('res%s' % c)[:, 0][:fc]
return forecast
except:# TypeError:
return [np.nan]*fc