我正在玩dart / flutter,我想不出如何在同一时间运行两个功能并等待它们完成的过程。
显然,我应该使用isolate.spawn,但是什么也无法工作,例如:
import pandas as pd
import numpy as np
from sqlalchemy import create_engine
df = pd.read_csv("file.csv",index_col=0)
df.head()
engine = create_engine("sqlite:///db/file.sqlite")
df.to_sql("file", engine)
这两个函数运行时,对Future.wait的调用不会等待它们完成。
然后是一个问题,我该如何处理这些函数的任何返回值。
有人吗? TIA。
答案 0 :(得分:0)
您的代码段无效,因为
Isolate.spawn返回的未来
如果生成成功,将以Isolate
实例完成,而不是在进入点(在这种情况下为t1
和t2
)返回时返回。
要处理产生的函数的返回值,可以使用ReceivePort
。例如:
import 'dart:io';
import 'dart:isolate';
t1(port) {
sleep(Duration(seconds: 3));
port.send(["t1", 1]);
}
t2(port) {
sleep(Duration(seconds: 6));
port.send(["t2", 2]);
}
main() async {
var receivePort = new ReceivePort();
Isolate.spawn(t1, receivePort.sendPort);
Isolate.spawn(t2, receivePort.sendPort);
await for (var retMsg in receivePort) {
print("res: $retMsg");
if (retMsg[0] == "t2") {
return;
}
}
}
答案 1 :(得分:0)
您可能会在这里发现package:isolate
有用。
import seaborn as sns
ndf = pd.melt(df, id_vars="CLASS", var_name="feature", value_name="val")
sns.catplot("feature", "val", col="CLASS", data=ndf, kind="bar", col_wrap=1)
plt.show()