我不明白 Langchain 递归文本分割器的以下行为。这是我的代码和输出。
from langchain.text_splitter import RecursiveCharacterTextSplitter
r_splitter = RecursiveCharacterTextSplitter(
chunk_size=10,
chunk_overlap=0,
# separators=["\n"]#, "\n", " ", ""]
)
test = """a\nbcefg\nhij\nk"""
print(len(test))
tmp = r_splitter.split_text(test)
print(tmp)
Run Code Online (Sandbox Code Playgroud)
输出
13
['a\nbcefg', 'hij\nk']
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,它输出大小为 7 和 5 的块,并且仅在新行字符之一上进行分割。我期望输出为 ['a','bcefg','hij','k']
我正在尝试使用openmp学习多线程编程.
首先,我测试了一个带有大量数组访问操作的嵌套循环,然后将其并行化.我附上下面的代码.基本上,我在内部循环中有这个相当大的数组tmp,如果我让它共享以便每个线程都可以访问和更改它,我的代码实际上会随着线程数量的增加而减慢.我写了它,以便每个线程将完全相同的值写入数组tmp.当我将tmp设为私有时,我的速度与线程数成正比.没有.在这两种情况下,我认为操作完全相同.为什么在共享tmp时速度会变慢?是因为不同的线程试图同时访问同一个地址吗?
int main(){
int k,m,n,dummy_cntr=5000,nthread=10,id;
long num=10000000;
double x[num],tmp[dummy_cntr];
double tm,fact;
clock_t st,fn;
st=clock();
omp_set_num_threads(nthread);
#pragma omp parallel private(tmp)
{
id = omp_get_thread_num();
printf("Thread no. %d \n",id);
#pragma omp for
for (k=0; k<num; k++){
x[k]=k+1;
for (m=0; m<dummy_cntr; m++){
tmp[m] = m;
}
}
}
fn=clock();
tm=(fn-st)/CLOCKS_PER_SEC;
}
Run Code Online (Sandbox Code Playgroud)
PS:我知道在这里使用clock()并没有真正给出正确的时间.我必须将它除以否.在这种情况下,线程获得"time ./a.out"给出的类似输出.
我试图将图形和表格并排放置,但表格始终垂直显示在图形下方,尽管其水平位置正确。如果两个元素都是数字,类似的代码对我有用。这是一个最小的代码示例。
fig = make_subplots()
fig.add_trace(go.Scatter(x = [1,2,3], y = [1,2,3]))
df = pd.DataFrame({'col1': [1, 2, 3], 'col2': ['This is a test ', 'This is a test', 'This is a test'], 'col3': [99, 100, 101]})
app = dash.Dash(__name__)
app.layout = html.Div([
html.Div([dcc.Graph(figure = fig)], style = {'width': '49%', 'display': 'inline-block'}),
html.Div([dt.DataTable(
data=df.to_dict('records'),
columns=[{'id': c, 'name': c} for c in df.columns],
style_table = {'height': 200, 'overflowX': 'auto'})], style = {'width': '49%', 'display': 'inline-block'}),
])
if __name__ == '__main__':
app.run_server(debug = True)
Run Code Online (Sandbox Code Playgroud)