Compare commits

...

15 Commits

Author SHA1 Message Date
peterlu14 ecb9e92092 [update] hide print 2022-04-08 18:40:39 +08:00
peterlu14 2e1ae9892b [update] fix index problem 2022-04-08 18:40:36 +08:00
Roy e98e05a515 [update] fix recording error 2022-04-08 18:40:17 +08:00
peterlu14 52095f0284 [update] add info of no data time 2022-04-08 15:11:44 +08:00
peterlu14 3f790b43de [update] change delta time 2022-04-08 15:10:59 +08:00
peterlu14 01e5370e1c [update] recover update raw_id 2022-03-30 10:52:08 +08:00
peterlu14 df4c178131 [update] remove print 2022-03-29 14:27:38 +08:00
peterlu14 81e6c48350 Merge branch 'rel/v1.4.0_schedule/channel_lost_data' into rel/v1.4.0.b_schedule/channel_lost_data 2022-03-29 14:22:43 +08:00
peterlu14 cd720e80e7 [update] set time check 2022-03-29 14:00:20 +08:00
Roy 2fd05d18ed [update] fix battery value 2022-03-25 13:41:48 +08:00
Roy 03011ebd5f Merge branch 'dev/check_sum/battery' into rel/v1.4.0_schedule/channel_lost_data 2022-03-25 12:11:05 +08:00
Roy 4b9bc30e28 [update] get battery value 2022-03-25 11:46:40 +08:00
Roy 4966113393 [update] use check sum 2022-03-25 11:44:52 +08:00
Roy 3371c21bbd [update] update log message 2022-03-25 11:34:30 +08:00
Roy afc87829d9 [update] head != tailer, delete data 2022-03-24 17:12:06 +08:00
8 changed files with 201 additions and 153 deletions
+2 -1
View File
@@ -536,7 +536,7 @@ class CC2650Device(Device):
self._master.log_warn('device', self.device_id, 'update_battery_info no response')
else:
if data is not None and len(data) == 4 :
if data is not None and len(data) > 2 :
battery = struct.unpack('<H', data[1:3])[0]
if battery is not None:
self._battery = battery
@@ -2035,6 +2035,7 @@ class CC2650SingleMasterCentralDevice(CC2650MasterDevice, Synchronized):
# print("local_name = ", local_name)
# addr type is don't care in BMD380
print('scan_response:', list(scan_response))
local_addr_type = int(scan_response[index:index + 1][0])
# local_addr_type = 0xFF
index = index + 1
+23 -17
View File
@@ -882,15 +882,18 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
if len(data) < 18:
return None
time_stamp: float = struct.unpack('<I', data[1:5])[0] # unit: ms 0x18030000
current = struct.unpack('<i', data[5:9])[0] # unit: nA
voltage = struct.unpack('<i', data[9:13])[0] # unit: uV
impedance = struct.unpack('<i', data[13:17])[0] # unit: mOm
cycle_number = struct.unpack('<H', data[17:19])[0]
finish_mode_falg = data[19]
mem_cnt = data[1]
time_stamp: float = struct.unpack('<I', data[4:8])[0] # unit: ms 0x18030000
current = struct.unpack('<i', data[8:12])[0] # unit: nA
voltage = struct.unpack('<i', data[12:16])[0] # unit: uV
impedance = struct.unpack('<i', data[16:20])[0] # unit: mOm
cycle_number = struct.unpack('<H', data[20:22])[0]
finish_mode_falg = data[22]
battery = struct.unpack('<i', data[23:27])[0]
elite_notify_times = data[27]
mem_wrong_information = struct.unpack('<i', data[40:40+4])[0] # mem_wrong_information = green retry, green wrong, red retry, red wrong
ram_num = data[44]
mem_wrong_information = struct.unpack('<i', data[43:47])[0] # mem_wrong_information = green retry, green wrong, red retry, red wrong
ram_num = data[47]
broken_flag = data[-1]
if (finish_mode_falg & 0b11110000 == 0b10100000):
@@ -942,12 +945,15 @@ class I4V4Z4T4DataDecoder(RecDataDecoder):
ret.append_data(1, voltage)
ret.append_data(2, impedance)
ret.append_data(3, cycle_number)
ret.append_data(4, battery)
ret.append_data(5, elite_notify_times)
ret.append_data(6, mem_cnt)
# memoryboard information
ret.append_data(4, ram_num)
ret.append_data(5, broken_flag)
ret.append_data(7, ram_num)
ret.append_data(8, broken_flag)
try:
ret.append_data(6, mem_wrong_information)
ret.append_data(9, mem_wrong_information)
# print('append_data success, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
except:
print('append_data fail, mem_wrong_information:', mem_wrong_information, hex(mem_wrong_information))
@@ -1450,12 +1456,12 @@ class EISZeroOneDataDecoder(RecDataDecoder):
if len(data) < 18:
return None
ch1 = struct.unpack('>i', data[1:5])[0] # unit: 1/1000 nA
ch2 = struct.unpack('>i', data[5:9])[0] # unit: mV
ch3 = struct.unpack('>i', data[9:13])[0] # unit: kOm
time_stamp: float = struct.unpack('<I', data[13:17])[0] # unit: ms
cycle_number = struct.unpack('>H', data[17:19])[0]
d19 = data[19]
ch1 = struct.unpack('>i', data[1+3:5+3])[0] # unit: 1/1000 nA
ch2 = struct.unpack('>i', data[5+3:9+3])[0] # unit: mV
ch3 = struct.unpack('>i', data[9+3:13+3])[0] # unit: kOm
time_stamp: float = struct.unpack('<I', data[13+3:17+3])[0] # unit: ms
cycle_number = struct.unpack('>H', data[17+3:19+3])[0]
d19 = data[19+3]
gain = (d19 & 0x0F)
finishMode = (d19 & 0x80) >> 7
+64 -41
View File
@@ -46,7 +46,7 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
self._elite_data_len = 40
self._mem_header_len = 3
self._mem_tailer_len = 8
self._mem_tailer_len = 6
self._single_data_len = self._elite_data_len + self._mem_header_len + self._mem_tailer_len
# buffer
@@ -167,10 +167,33 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
print("read red data times", self._read_red_times)
return data
def _compare_green_data_addr_and_flag(self, data: Union[bytes, List[int]], device: int):
green_data_section1 = data[3:7]
green_data_section2 = data[7:11]
green_data_section3 = data[11:15]
green_data_section = []
if green_data_section1 == green_data_section2:
green_data_section = green_data_section1
elif(green_data_section2 == green_data_section3 or green_data_section1 == green_data_section3):
print("green data not equal: = ", data[3:15])
print("green data print:", data, device, datetime.now())
green_data_section = green_data_section3
else:
print("green data not equal: = ", data[3:15])
print("green data print:", data, device, datetime.now())
green_data_section = green_data_section3 # use last data
return green_data_section
def _print_ram_all_data(self):
addr = 0
red_length = int(7000 / 2)
tx_temp = [0] * red_length
tx_temp = [0] * (red_length + 3)
while True:
tx_temp[0] = MEM_INS_READ
@@ -216,7 +239,7 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
self._head_wrong_cnt[device] = self._head_wrong_cnt[device] + 1
if (self._head_wrong_cnt[device] <= 5): # print 5 times
print('data_first[0:3] != [255, 255, 255], device:', device, ',', self._head_wrong_cnt[device], 'times')
print(list(data[0:15]))
print(list(data))
data[0:3] = [255, 255, 255]
# ----------------------------------------------------------------------------------------------
@@ -235,13 +258,13 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
# self._head_wrong_cnt[device] = self._head_wrong_cnt[device] + 1
# if (self._head_wrong_cnt[device] < 10):
# print('data_first[0:3] != [255, 255, 255], device:', device, ',', self._head_wrong_cnt[device], 'times')
# print(list(data_first[0:7]))
# print(list(data_first))
# if (data_second[0] != 255 or data_second[1] != 255 or data_second[2] != 255):
# self._head_wrong_cnt[device] = self._head_wrong_cnt[device] + 1
# if (self._head_wrong_cnt[device] < 10):
# print('data_second[0:3] != [255, 255, 255], device:', device, ',', self._head_wrong_cnt[device], 'times')
# print(list(data_second[0:7]))
# print(list(data_second))
# if (data_first[3:] == data_second[3:]):
# data = data_first
@@ -253,27 +276,7 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
# data = self.compare_green_data(data_first, data_second, data_third, len(tx_h))
# ----------------------------------------------------------------------------------------------
# debug use
# green_data = []
# green_data = data
# print("_[Debug] @ spi green data = ", green_data)
green_data_section1 = data[3:7]
green_data_section2 = data[7:11]
green_data_section3 = data[11:15]
if green_data_section1 == green_data_section2:
green_data_section = green_data_section1
elif(green_data_section2 == green_data_section3 or green_data_section1 == green_data_section3):
print("green data not equal: = ", data[3:15])
print("green data print:", data, device, datetime.now())
green_data_section = green_data_section3
else:
print("green data not equal: = ", data[3:15])
print("green data print:", data, device, datetime.now())
green_data_section = green_data_section3 # use last data
green_data_section = self._compare_green_data_addr_and_flag(data, device)
length = (green_data_section[0] << 8) | green_data_section[1]
header = data[15]
@@ -284,8 +287,8 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
print("length < 12")
print("green data print:", data, device, datetime.now())
if length == 0:
self._print_ram_all_data()
# if length == 0:
# self._print_ram_all_data()
return None
@@ -302,7 +305,7 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
if (header != 255):
flag_print = True
print("green data: header is not 255: ", header)
self._print_ram_all_data()
# self._print_ram_all_data()
if (elite_data_len != self._elite_data_len):
flag_print = True
@@ -311,18 +314,9 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
if (flag_print):
print("green data print:", data, device, datetime.now(), '\n')
# neulive
# address += len(data) - 11
# tx_d = self._tx_buffer_data
# red_length = len(tx_d)
address = 12
red_length = int(length / 2)
tx_d = [0] * red_length
# elite read len(_tx_buffer_data) byte
# address = 12
# tx_d = self._tx_buffer_data
tx_d = [0] * (red_length + 3)
while True:
tx_d[0] = MEM_INS_READ
@@ -377,11 +371,40 @@ class MultiExtMemSpiInterface(LowLevelHardwareInterface):
# * red data formate:
# * ramHdr, ramHdr, ramHdr, (3B)
# * 255, #, data_length, (3B)
# * data, (20B)
# * data, (40B)
# * red_wrong, red_retry_cnt, green_wrong, green_retry_cnt, (4B)
# * 255, #, data_length, (3B)
# * check_num, (1B)
# * */
# read again if check num is wrong
index = 0
check_number_print = False
for i in range(0, len(rx), self._single_data_len):
check_sum = sum(rx[i : i + self._single_data_len - 1]) & 0b11111111
# print(check_sum, rx[i + self._single_data_len - 1])
if (check_sum != rx[i + self._single_data_len - 1]):
# print('check_sum wrong, origin value:', 'check_sum =', check_sum, rx[i : i + self._single_data_len])
tx_d = [0] * (self._single_data_len + 3)
address = 12 + self._single_data_len * index
tx_d[0] = MEM_INS_READ
tx_d[1] = ((address >> 8) & 0xFF)
tx_d[2] = (address & 0xFF)
data = []
data = self._spi.send_byte(tx_d)
data[0:3] = [255, 255, 255]
rx[i : i + self._single_data_len] = data[3:]
print('check_sum wrong, read again:', 'check_sum =', check_sum, rx[i : i + self._single_data_len])
check_number_print = True
index = index + 1
if check_number_print:
print('check_sum wrong:', device, datetime.now())
for i in range(0, len(rx), self._single_data_len):
print(rx[i:i+self._single_data_len])
print()
# mark read
self._spi.send_byte(self.MEM_INS_MARKED1)
self._spi.send_byte(self.MEM_INS_MARKED2)
-1
View File
@@ -1353,7 +1353,6 @@ class RecordingFileWriter:
mini_id_dict[ch] = {}
for scale in self._mini_scale_list:
mini_id_dict[ch][scale] = self._recording_mini_dict[str(scale)][ch]._id_db
print('self._meta._id_db, mini_id_dict', self._meta._id_db, mini_id_dict)
self._database.put_queue(['data_meta_update_all_channel_mini_id', self._meta._id_db, mini_id_dict])
data_save = False
+9
View File
@@ -126,6 +126,9 @@ class DataServer(SocketServer, DataAPI):
self.database_process = DataBaseProcess('data_server', self.log_verbose, self._queue_db, self._queue_ds_dict, self._queue_db_error)
self.database_process.start()
self._no_data_total_duration = 0
self._recv_memory_cost_time = 0
@logging_info
def setup(self):
self._available_channel.clear()
@@ -669,7 +672,13 @@ class DataServer(SocketServer, DataAPI):
print("q size= ", self._configurations[device]._queue_rec.qsize())
self._configurations[device].put_rec_queue(data)
self._no_data_total_duration = 0
ret = True
else:
time_diff = time() - self._recv_memory_cost_time
self._no_data_total_duration += time_diff
print('data is None', device, datetime.now(), self._no_data_total_duration)
self._recv_memory_cost_time = time()
return ret
+7 -11
View File
@@ -160,7 +160,7 @@ class DataBaseProcess(Process):
getattr(self, do)(*args)
return None
@calculate_time
@calculate_time(1)
def data_meta_write(self, _data: JSON_OBJECT, device_id, _uuid = None, _id = None):
if _id > 0:
sql_str = 'UPDATE "public"."recording_data_metas" SET '
@@ -376,7 +376,7 @@ class DataBaseProcess(Process):
print('recording error', e)
return None
# @calculate_time
@calculate_time(1)
def data_raw_recording_new(self, _id_dict, _channel_list, _data_dict, _end_time_dict, _size_dict):
try:
para_list = []
@@ -446,7 +446,7 @@ class DataBaseProcess(Process):
return True
# @calculate_time
@calculate_time(1)
def data_mini_recording_new(self, _id_dict, _channel_list, _data_mean_dict):
try:
para_list = []
@@ -508,17 +508,13 @@ class DataBaseProcess(Process):
return True
# @calculate_time
@calculate_time(1)
def data_meta_update_all_channel_raw_id(self, meta_id:str, raw_id_dict:dict):
try:
sql_str = "UPDATE recording_data_metas SET raw_data = "
sql_str = "UPDATE recording_data_metas SET raw_data = jsonb_insert(raw_data, '{%s, -1}', '%s', TRUE) WHERE id = %s;"
sql_set = []
for ch in raw_id_dict.keys():
sql_str += "jsonb_insert(raw_data -> %s, '{-1}', '%s', TRUE) ||"
sql_set.extend([ch, raw_id_dict[ch]])
sql_str[:-2] + "WHERE id = %s;"
sql_set.append(meta_id)
print(sql_str, sql_set)
sql_set.append([ch, raw_id_dict[ch], meta_id])
with self._psql_conn as conn:
with conn.cursor() as sql_cursor:
execute_batch(sql_cursor, sql_str, sql_set)
@@ -539,7 +535,7 @@ class DataBaseProcess(Process):
return True
# @calculate_time
@calculate_time(1)
def data_meta_update_all_channel_mini_id(self, meta_id, mini_id_dict):
try:
sql_str = "UPDATE recording_data_metas SET mini_data = jsonb_insert(mini_data, '{%s, %s, -1}', '%s', TRUE) WHERE id = %s;"
+85 -73
View File
@@ -98,6 +98,11 @@ class RecordingProcess(Process):
self._last_cnt = [-1, -1, -1, -1, -1, -1, -1, -1]
self._wrong_cnt = 0
# elite data length
self._elite_data_len = 40
self._mem_header_len = 3
self._mem_tailer_len = 6
self._single_data_len = self._elite_data_len + self._mem_header_len + self._mem_tailer_len
def ensure_data_format(self) -> DataDecodeFormat:
if isinstance(self._data_format, (str, bytes)):
@@ -160,7 +165,11 @@ class RecordingProcess(Process):
"""
q = None
try:
now = time()
q = self._queue_rec.get()
get_queue_time_cost = time() - now
if get_queue_time_cost > 1.1:
print('get queue cost time', get_queue_time_cost, 'q_size', self._queue_rec.qsize())
except:
return False
finally:
@@ -186,7 +195,7 @@ class RecordingProcess(Process):
current_time = time()
if self._timer is not None:
if current_time - self._timer > 1.5:
print('time, sync_data routine_time', current_time, current_time - self._timer)
print('time, sync_data routine_time', 'device:', self._device, datetime.now(), current_time, current_time - self._timer)
self._isTimeOut = True
self._timer = current_time
@@ -286,6 +295,7 @@ class RecordingProcess(Process):
self._last_cnt[7] = head_counter - 1
last_data_cnt = self._last_cnt[7]
# dont save to section when head or id is wrong
if (head != 255 or device_id != device):
save = False
last_data_cnt = last_data_cnt + 1
@@ -328,60 +338,57 @@ class RecordingProcess(Process):
return save
def _check_jump_ram(self, raw_data: bytes, colum_now: int, colum_total: int, save: bool, device: int):
i = colum_now
def _check_jump_ram(self, raw_data: bytes, colum_now: int, colum_total: int, save: bool, device: int, data_len: int):
col = colum_now
save = False
if (raw_data[i][0] == 255 and raw_data[i][3] == device):
if colum_total < 3:
print('this ram data < 3 records, need to fix, colum_total = ', colum_total)
if colum_total == 1:
print('raw_data[0]', raw_data[0])
if raw_data[col][0] != 255 or raw_data[col][3] != device:
return save
elif colum_total == 2:
print('raw_data[0]', raw_data[0])
print('raw_data[1]', raw_data[1])
if colum_total == 1:
print('this ram data < 3 records, colum_total = ', colum_total)
print('raw_data[0]', raw_data[0])
return save
else:
elif colum_total == 2:
print('this ram data < 3 records, colum_total = ', colum_total)
print('raw_data[0]', raw_data[0])
print('raw_data[1]', raw_data[1])
if (raw_data[col + 1][1] - raw_data[col][1] == 1) or (raw_data[col][1] == 255 and raw_data[col + 1][1] == 0):
save = True
if((raw_data[i + 1][1] - raw_data[i][1] == 1 and raw_data[i + 2][1] - raw_data[i + 1][1] == 1) or
(raw_data[i][1] == 255 and raw_data[i + 1][1] == 0 and raw_data[i + 2][1] == 1) or
(raw_data[i][1] == 254 and raw_data[i + 1][1] == 255 and raw_data[i + 2][1] == 0)):
elif colum_total >= 3:
if (raw_data[col + 1][1] - raw_data[col][1] == 1 and raw_data[col + 2][1] - raw_data[col + 1][1] == 1) or\
(raw_data[col][1] == 255 and raw_data[col + 1][1] == 0 and raw_data[col + 2][1] == 1) or\
(raw_data[col][1] == 254 and raw_data[col + 1][1] == 255 and raw_data[col + 2][1] == 0):
save = True
if ((raw_data[i][1] == 255 and raw_data[i + 1][1] == 0 and raw_data[i + 2][1] == 1) or
(raw_data[i][1] == 254 and raw_data[i + 1][1] == 255 and raw_data[i + 2][1] == 0)):
print('cnt = [254, 255, 0] or [255, 0, 1]')
if save == True:
self._skip_ram_cnt += 1
last_data_cnt = raw_data[col][1]
if (device == 4):
print('self._last_cnt[4]:', self._last_cnt[4], ', last_data_cnt:', last_data_cnt)
if (device == 5):
print('self._last_cnt[5]:', self._last_cnt[5], ', last_data_cnt:', last_data_cnt)
if (device == 6):
print('self._last_cnt[6]:', self._last_cnt[6], ', last_data_cnt:', last_data_cnt)
if (device == 7):
print('self._last_cnt[7]:', self._last_cnt[7], ', last_data_cnt:', last_data_cnt)
print('skip RAM, but data is right, solve data', list(raw_data[col][0:3]),'|', list(raw_data[colum_total-1][0:3]), 'skip Ram', self._skip_ram_cnt, 'times \n')
save = True
self._skip_ram_cnt += 1
last_data_cnt = raw_data[i][1]
if (device == 4):
print('self._last_cnt[4]:', self._last_cnt[4], ', last_data_cnt:', last_data_cnt)
if (device == 5):
print('self._last_cnt[5]:', self._last_cnt[5], ', last_data_cnt:', last_data_cnt)
if (device == 6):
print('self._last_cnt[6]:', self._last_cnt[6], ', last_data_cnt:', last_data_cnt)
if (device == 7):
print('self._last_cnt[7]:', self._last_cnt[7], ', last_data_cnt:', last_data_cnt)
print('skip RAM, but data is right, solve data', list(raw_data[i][0:3]),'|', list(raw_data[colum_total-1][0:3]), 'skip Ram', self._skip_ram_cnt, 'times \n')
# print('data:')
# print('|', list(raw_data[0]))
# print('|', list(raw_data[1]))
# print('| ... ... ...')
# print('| ... ... ...')
# print('|', list(raw_data[colum_total-1]))
if (device == 4):
self._last_cnt[4] = last_data_cnt
if (device == 4):
self._last_cnt[4] = last_data_cnt
elif (device == 5):
self._last_cnt[5] = last_data_cnt
elif (device == 5):
self._last_cnt[5] = last_data_cnt
elif (device == 6):
self._last_cnt[6] = last_data_cnt
elif (device == 6):
self._last_cnt[6] = last_data_cnt
elif (device == 7):
self._last_cnt[7] = last_data_cnt
elif (device == 7):
self._last_cnt[7] = last_data_cnt
return save
def _neu_foreach_data_section(self, data: bytes):
@@ -496,54 +503,59 @@ class RecordingProcess(Process):
:return:
"""
raw_data = []
index = 0
elite_data_len = 40
mem_header_len = 3
mem_tailer_len = 8
single_data_len = elite_data_len + mem_header_len + mem_tailer_len
device = self._device
records = 0
print_flag = False
device = self._device
single_data_len = self._single_data_len
mem_header_len = self._mem_header_len
# packet section data use two microarray
for i in range(0, len(data), single_data_len):
index = index + 1
for j in range(index, index + 1):
raw_data.append(data[i : i + single_data_len])
records = records + 1
raw_data.append(data[i : i + single_data_len])
if len(data[i : i + 10]) < 10:
print('data dont be package:', raw_data[records - 1], 'index:', records - 1)
del raw_data[records - 1]
records = records - 1
# check cnt
for i in range(index):
for i in range(records):
# if jump cnt, don't save data
save = self._check_cnt(raw_data[i], device)
# # if jump Ram, also can handle data
if save == False:
save = self._check_jump_ram(raw_data, i, index, save, device)
save = self._check_jump_ram(raw_data, i, records, save, device, single_data_len)
if (save == True):
section = raw_data[i]
if (section[0 : mem_header_len] == section[single_data_len - 3: single_data_len]):
section = section + b'\x00'
else:
section = section + b'\x01'
print('header != tailer,',
list(section[0 : mem_header_len]),
list(section[single_data_len - 3: single_data_len]),
'device:', device, ',', datetime.now())
check_sum = sum(section[0 : single_data_len - 1]) & 0b11111111
if (check_sum != section[single_data_len - 1]):
print('check number not match,',
list(section[0 : mem_header_len]), section[-1], '!=', check_sum, 'device:', device, ',', datetime.now())
if (i-1 >= 0):
print('header != tailer', list(raw_data[i-1]), 'raw:', i-1)
print('header != tailer', list(section), 'raw:', i)
if (i+1 <= index):
print('header != tailer', list(raw_data[i+1]), 'raw:', i+1, '\n')
section = section[3:]
print('check number not match', list(raw_data[i-1]), 'raw:', i-1)
print('check number not match', list(raw_data[i]), 'raw:', i)
if (i+1 <= records):
print('check number not match', list(raw_data[i+1]), 'raw:', i+1, '\n')
section = section + b'\x01'
print('delete data:', list(raw_data[i][0:3]), 'raw:', i, '\n')
continue
else:
section = section + b'\x00'
# section = section[3:]
yield None, section
else:
print_flag = True
print('delete data:', list(raw_data[i][0:3]), 'raw:', i+1, '\n')
print('delete data:', list(raw_data[i][0:3]), 'raw:', i, '\n')
# if print_flag:
# print('delete data context:')
+11 -9
View File
@@ -523,13 +523,15 @@ def logging_error(f):
return _logger
def calculate_time(func, time_limit=None):
def warp(*args, **kwargs):
now = time()
func(*args, **kwargs)
if time_limit == None:
print(func.__name__,'cost:', time() - now)
else:
if time() - now > time_limit:
def calculate_time(time_limit=None):
def actual_calculate_time(func):
def warp(*args, **kwargs):
now = time()
func(*args, **kwargs)
if time_limit == None:
print(func.__name__,'cost:', time() - now)
return warp
else:
if time() - now > time_limit:
print(func.__name__,'cost:', time() - now)
return warp
return actual_calculate_time