Python超时函数

时间:2017-01-31 16:10:59

标签: python r python-2.7 timeout forecasting

我创建了一个预测程序,它从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

0 个答案:

没有答案