GEE实战 | (批处理)取消任务cancel tasks

  在通过Google Colab使用Python导出图像的时候,运行的时候发现导错了某些波段信息,然而历史巨轮已经滚动了,想取消任务,一时间发现找不到叉叉,只能等导出完再删掉。之后,找了一些方法,这里做个记录。

开始任务

  先介绍下通过Python导出,好处是不用点击run就可以开始任务~

单个任务

Create an export task:

task = ee.batch.Export.image.toDrive(image=my_image,  # an ee.Image object.
                                     region=my_geometry,  # an ee.Geometry object.
                                     description='mock_export',
                                     folder='gdrive_folder',
                                     fileNamePrefix='mock_export',
                                     scale=1000,
                                     crs='EPSG:4326')

Start an export task:

task.start()

Check export task status:

task.status()

多个任务

  多个导出通过for循环就好了。

# Export all the training data (in many pieces), with one task per geometry.
for g in range(trainingPolys.size().getInfo()):
  geomSample = ee.FeatureCollection([])
  for i in range(n):
    sample = arrays.sample(
      region = ee.Feature(trainingPolysList.get(g)).geometry(), 
      scale =100,
      numPixels = N / n, # Size of the shard.
      seed = i,
      tileScale = 8
    )
    geomSample = geomSample.merge(sample)

  desc = TRAINING_BASE + '_gSlope' + str(g)

  task = ee.batch.Export.table.toDrive(
    collection = geomSample,
    description = desc,
    folder = FOLDER,
    fileNamePrefix = desc,
    fileFormat = 'TFRecord',
    selectors = BANDS + LABELS
  )
  task.start()

  可以查看导出情况,或者直接去GEE在线平台看。
Monitor task progress

# Print all tasks.
pprint(ee.batch.Task.list()[:10])
[<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:

task.start()

Cancel a task:

task.cancel()

  就是这么简单~

多个任务

  多个取消就用ee.batch.Task.list()加上循环,然后反复cancel就好啦,比如:

for task in ee.batch.Task.list()[:10]:
	task.cancel()

GEE Command Line Tool

  不死心的我又去找了下,发现可以通过GEE的命令行工具earthengine Command Line Tool完成任务取消操作。这里简单介绍下
  一般来说,earthengine在安装Python API的时候会自动安装,可以通过如下代码测试下。

earthengine

  这是在命令行的代码,如果是在Google Colab或者jupyter notebook等平台操作,需要前面加!,即:

!earthengine

  因为本人是在Google Colab下运行,所以下面都加了!
  如果没报错,可以通过如下进行对某个命令查找帮助:

!earthengine command -h

单个任务

  接下来就是如何取消任务了。想取消一个任务,完整代码如下:

!earthengine task list
!earthengine task info TASK_ID
!earthengine task cancel TASK_ID

  下面稍微解释下:首先查看任务列表:

!earthengine task list

  前面红色这些是Task ID
在这里插入图片描述
  补充下,同Python一样,也可以只打印部分tasks:
first 5 tasks:

earthengine task list | head -n 5

last 5 tasks:

earthengine task list | tail -n 5

  知道Task ID后,可以进一步查看task信息,信息如下:

!earthengine task info 34IP7EXHFBP6BXBHPDOFGXWX

在这里插入图片描述
  然后一个个ID取消就好了,通过for循环啥的也可以完成批处理。

多个任务

  我们的最高目标还是批删除任务,所以还是找到了方法 😃 其实也很简单

!earthengine task cancel all

  Dont worry, be happy~

批处理Console (没成功)

  后来发现这篇博客貌似可以成功,大家参考下。
  Stack Exchange解决方案


  网上找了篇通过console任务控制命令,但是没运行成功。大家可以自行尝试,欢迎成功的分享经验~ 链接
  首先在浏览器打开GEE线上平台并打开开发者人员工具ctrl+shift+I,在调试器console粘贴代码:
在这里插入图片描述

启动全部task

function runTaskList(){
    var tasklist = document.getElementsByClassName('task local type-EXPORT_IMAGE awaiting-user-config');
    for (var i = 0; i < tasklist.length; i++)
            tasklist[i].getElementsByClassName('run-button')[0].click();
}

function confirmAll() {
    var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
    for (var i = 0; i < ok.length; i++)
        ok[i].click();
}

runTaskList();
confirmAll();

停止全部task

function stopTaskList(){
    var tasklist = document.getElementsByClassName('task remote type-EXPORT_IMAGE submitted-to-backend');
    for (var i = 0; i < tasklist.length; i++)
            tasklist[i].getElementsByClassName('indicator')[0].click();
}

function confirmAll() {
    var ok = document.getElementsByClassName('goog-buttonset-default goog-buttonset-action');
    for (var i = 0; i < ok.length; i++)
        ok[i].click();
}
stopTaskList();
confirmAll();
  • 2
    点赞
  • 9
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值