在通过Google Colab使用Python导出图像的时候,运行的时候发现导错了某些波段信息,然而历史巨轮已经滚动了,想取消任务,一时间发现找不到叉叉,只能等导出完再删掉。之后,找了一些方法,这里做个记录。
开始任务
先介绍下通过Python导出,好处是不用点击run就可以开始任务~
单个任务
Create an export task:
1 | task = ee.batch.Export.image.toDrive(image=my_image, # an ee.Image object. |
Start an export task:
1 | task.start() |
Check export task status:
1 | task.status() |
多个任务
多个导出通过for循环就好了。
1 | # Export all the training data (in many pieces), with one task per geometry. |
可以查看导出情况,或者直接去GEE在线平台看。
Monitor task progress
1 | # Print all tasks. |
[<Task EXPORT_FEATURES: eval_patches_gSlope2 (READY)>,
<Task EXPORT_FEATURES: eval_patches_gSlope1 (READY)>,
<Task EXPORT_FEATURES: eval_patches_gSlope0 (READY)>,
<Task EXPORT_FEATURES: training_patches_gSlope4 (READY)>,
<Task EXPORT_FEATURES: training_patches_gSlope3 (READY)>,
<Task EXPORT_FEATURES: training_patches_gSlope2 (READY)>,
<Task EXPORT_FEATURES: training_patches_gSlope1 (READY)>,
<Task EXPORT_FEATURES: training_patches_gSlope0 (READY)>,
<Task EXPORT_FEATURES: eval_patches_gSlope2 (FAILED)>,
<Task EXPORT_FEATURES: eval_patches_gSlope1 (FAILED)>]
取消任务
单个任务(线上平台)
在官网上查找发现还是可以通过在线JavaScript平台取消的,但是需要一个个点击,官网是这么介绍的。
简单翻译下,就是很友好,自己点击run开始任务,如果中途取消就需要点击旁边旋转的GEE标志。
对于任务小的情况还可以,一旦几百个,就对手指提出了较大挑战。:(
Python API
后来翻了下python API,找打了函数 :( 所以还是建议第一个看API,能解决很多问题。开始取消一个任务代码如下:
单个任务
Start a task:
1 | task.start() |
Cancel a task:
1 | task.cancel() |
就是这么简单~
多个任务
多个取消就用ee.batch.Task.list()
加上循环,然后反复cancel就好啦,比如:
1 | for task in ee.batch.Task.list()[:10]: |
GEE Command Line Tool
不死心的我又去找了下,发现可以通过GEE的命令行工具earthengine Command Line Tool完成任务取消操作。这里简单介绍下
一般来说,earthengine在安装Python API的时候会自动安装,可以通过如下代码测试下。
1 | earthengine |
这是在命令行的代码,如果是在Google Colab或者jupyter notebook等平台操作,需要前面加!
,即:
1 | !earthengine |
因为本人是在Google Colab下运行,所以下面都加了!
如果没报错,可以通过如下进行对某个命令查找帮助:
1 | !earthengine command -h |
单个任务
接下来就是如何取消任务了。想取消一个任务,完整代码如下:
1 | !earthengine task list |
下面稍微解释下:首先查看任务列表:
1 | !earthengine task list |
前面红色这些是Task ID
补充下,同Python一样,也可以只打印部分tasks:
first 5 tasks:
1 | earthengine task list | head -n 5 |
last 5 tasks:
1 | earthengine task list | tail -n 5 |
知道Task ID后,可以进一步查看task信息,信息如下:
1 | !earthengine task info 34IP7EXHFBP6BXBHPDOFGXWX |
然后一个个ID取消就好了,通过for循环啥的也可以完成批处理。
多个任务
我们的最高目标还是批删除任务,所以还是找到了方法 :) 其实也很简单
1 | !earthengine task cancel all |
Dont worry, be happy~
批处理Console (没成功)
后来发现这篇博客貌似可以成功,大家参考下。
Stack Exchange解决方案
网上找了篇通过console任务控制命令,但是没运行成功。大家可以自行尝试,欢迎成功的分享经验~ 链接
首先在浏览器打开GEE线上平台并打开开发者人员工具ctrl+shift+I
,在调试器console粘贴代码:
启动全部task
1 | function runTaskList(){ |
停止全部task
1 | function stopTaskList(){ |