From 93cd57457388067723af9fc90b43e14cde0e484f Mon Sep 17 00:00:00 2001 From: yejianwu Date: Wed, 11 Apr 2018 17:44:41 +0800 Subject: [PATCH] add file lock to adb_run --- docker/Dockerfile | 7 +++--- tools/sh_commands.py | 54 ++++++++++++++++++++++++-------------------- 2 files changed, 34 insertions(+), 27 deletions(-) diff --git a/docker/Dockerfile b/docker/Dockerfile index 1dfcc83a..e2a3add3 100644 --- a/docker/Dockerfile +++ b/docker/Dockerfile @@ -109,12 +109,13 @@ RUN apt-get install -y --no-install-recommends \ # Install tools RUN pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com setuptools -RUN pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com tensorflow==1.4.0 \ +RUN pip install -i http://pypi.douban.com/simple/ --trusted-host pypi.douban.com tensorflow==1.6.0 \ scipy \ jinja2 \ pyyaml \ - sh \ - pycodestyle + sh==1.12.14 \ + pycodestyle==2.4.0 \ + filelock # Download tensorflow tools RUN wget http://cnbj1-inner-fds.api.xiaomi.net/mace/tool/transform_graph && \ diff --git a/tools/sh_commands.py b/tools/sh_commands.py index 8c1bd423..9d848f9e 100644 --- a/tools/sh_commands.py +++ b/tools/sh_commands.py @@ -1,7 +1,8 @@ -import sh +import falcon_cli +import filelock import re +import sh import time -import falcon_cli ################################ @@ -85,28 +86,33 @@ def adb_run(serialno, print( "=====================================================================" ) - print("Run on device: %s, %s, %s" % (serialno, props["ro.board.platform"], - props["ro.product.model"])) - sh.adb("-s", serialno, "shell", "rm -rf %s" % device_bin_path) - sh.adb("-s", serialno, "shell", "mkdir -p %s" % device_bin_path) - print("Push %s to %s" % (host_bin_full_path, device_bin_full_path)) - sh.adb("-s", serialno, "push", host_bin_full_path, device_bin_full_path) - print("Run %s" % device_bin_full_path) - stdout_buff = [] - process_output = make_output_processor(stdout_buff) - p = sh.adb( - "-s", - serialno, - "shell", - "MACE_OUT_OF_RANGE_CHECK=%d MACE_OPENCL_PROFILING=%d " - "MACE_CPP_MIN_VLOG_LEVEL=%d %s %s" % - (out_of_range_check, opencl_profiling, vlog_level, - device_bin_full_path, args), - _out=process_output, - _bg=True, - _err_to_out=True) - p.wait() - return "".join(stdout_buff) + lock_path = "/tmp/device-lock-%s" % serialno + print("Try to lock ", lock_path) + with filelock.FileLock(lock_path, timeout=3600): + print("Run on device: %s, %s, %s" % (serialno, + props["ro.board.platform"], + props["ro.product.model"])) + sh.adb("-s", serialno, "shell", "rm -rf %s" % device_bin_path) + sh.adb("-s", serialno, "shell", "mkdir -p %s" % device_bin_path) + print("Push %s to %s" % (host_bin_full_path, device_bin_full_path)) + sh.adb("-s", serialno, "push", host_bin_full_path, + device_bin_full_path) + print("Run %s" % device_bin_full_path) + stdout_buff = [] + process_output = make_output_processor(stdout_buff) + p = sh.adb( + "-s", + serialno, + "shell", + "MACE_OUT_OF_RANGE_CHECK=%d MACE_OPENCL_PROFILING=%d " + "MACE_CPP_MIN_VLOG_LEVEL=%d %s %s" % + (out_of_range_check, opencl_profiling, vlog_level, + device_bin_full_path, args), + _out=process_output, + _bg=True, + _err_to_out=True) + p.wait() + return "".join(stdout_buff) ################################ -- GitLab