我有一个由时间序列组成的数据框架。
日期索引_等
我使用pyRserve运行了一个预测函数,使用R.
我想用芹菜实现并行处理。我在下面的上下文中编写了工作代码。
def pipeR(k #input variable):
conn = pyRserve.connect(host = 'localhost', port = 6311)
# OPENING THE CONNECTION TO R
conn.r.i = k
# ASSIGNING THE PYTHON VARIABLE TO THAT OF IN THE R ENVIRONMENT
conn.voideval\('''
WKR_Func <- forecst(a)
{
...# FORECASTS THE TIMESERIES IN COLUMN a OF THE DATAFRAME
}
''')
conn.eval('forecst(i)')
# CALLING THE FUNCTION IN R
group(pipeR.s(k) for k in [...list of column headers...])()要实现并行处理,我可以为所有工作进程拥有一个端口(就像我在上面的代码,端口:6311中所做的那样),还是应该为不同的工作进程拥有不同的端口?
我现在收到了一个错误
socketConnection中的错误(“localhost”、port=port、server=TRUE、blocking=TRUE ):无法打开连接
在R.
发布于 2015-12-24 05:14:23
当我为每个工作进程打开不同的端口时,问题就解决了.
def pipeR( k, Frequency, Horizon, Split, wd_path):
# GENERATING A RANDOM PORT
port = randint(1000,9999)
# OPENING THE PORT IN THE R ENVIRONMENT
conn0 = pyRserve.connect(host = 'localhost', port = 6311)
conn0.r.port = port
conn0.voidEval\
('''
library(Rserve)
Rserve(port = port, args = '--no-save')
''')
# OPENING THE PORT IN THE PYTHON ENVIRONMENT
conn = pyRserve.connect(host = 'localhost', port = port)
# ASSIGNING THE PYTHON VARIABLE TO THAT OF IN THE R ENVIRONMENT
conn.r.i = k
conn.voideval\
('''
WKR_Func <- forecst(a)
{
...# FORECASTS THE TIMESERIES IN COLUMN a OF THE DATAFRAME
}
''')
conn.eval/('forecst(i)')
conn0.close()https://stackoverflow.com/questions/34349014
复制相似问题