问题描述
我运行了如下所示的代码。然而
我不认为执行 tokio.spawn
的部分正在执行。
尽管事实上我在调用函数时 .await
。
我该如何解决这个问题?
pub async fn multi_features(
chainlen: usize,floatlen: usize,atom_num: usize,c: &Array2<f32>,v: &Array2<f32>,) -> (Array2<f32>,Array3<f32>) {
let ca_features = Arc::new(Mutex::new(Array2::<f32>::zeros((atom_num/4+1,(2*chainlen + floatlen)*8+3))));
let ca_basics = Arc::new(Mutex::new(Array3::<f32>::zeros((atom_num/4+1,3,3))));
for atom_id in 0..atom_num {
let ca_features = ca_features.clone();
let ca_basics = ca_basics.clone();
tokio::spawn(async move {
let mut ca_features = ca_features.lock().unwrap();
let mut ca_basics = ca_basics.lock().unwrap();
let basic = now_basic_vec(atom_id,atom_num,c);
ca_basics.index_axis_mut(Axis(0),atom_id/4).assign(&basic);
let now_feature = features(atom_id,chainlen,floatlen,&basic,c,v);
ca_features.index_axis_mut(Axis(0),atom_id/4).assign(&now_feature);
}).await.unwrap();
}
(Arc::try_unwrap(ca_features).unwrap().into_inner().unwrap(),Arc::try_unwrap(ca_basics).unwrap().into_inner().unwrap(),)
}
#[tokio::main]
fn main() {
let res = multi_features(50,50,1253,&c,&v).await; // this function is never end
}
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)