我想在Darts中建立功能队列。排队应该是异步的,允许多个功能同时运行。但是,最多应同时执行三个功能。我该如何实现?
我已经束缚了工作清单,但是我在努力限制同时运行功能上的努力
List<String> queue = new List();
main(){
queue.add("...");
queue.add("...");
queue.add("...");
for(String q in queue){
await crawl(q);
}
}
crawl(String) async{
...
}
答案 0 :(得分:0)
我会使用队列:
import "dart:collection";
final queue = Queue<String>();
main() {
queue
..add("...")
..add("...")
..add("...");
while (queue.isNotEmpty) {
await crawl(queue.removeFirst());
}
}
crawl(String x) async {
.... queue.add(...) ...
}
这应该有效。因为等待每个操作,它不会进行并发爬网。如果要进行并发爬网,建议您更聪明一些。寻找工作池或类似的结构,以确保您仅同时运行一定数量的操作。