{ "cells": [ { "cell_type": "code", "execution_count": 1, "metadata": {}, "outputs": [], "source": [ "import datetime,time\n", "from multiprocessing import Pool\n", "import json\n", "import os\n", "import traceback\n", "import warnings\n", "import numpy as np\n", "\n", "from sqlalchemy import text, delete, and_, or_, update\n", "import pandas as pd\n", "\n", "from ZlwlAlgosCommon.utils.ProUtils import *\n", "from ZlwlAlgosCommon.service.iotp.IotpAlgoService import IotpAlgoService\n", "from ZlwlAlgosCommon.service.iotp.Beans import DataField\n", "from ZlwlAlgosCommon.orm.models import *" ] }, { "cell_type": "code", "execution_count": 2, "metadata": {}, "outputs": [], "source": [ "from DataSplit.V_1_0_0 import data_status as ds\n", "from DataSplit.V_1_0_0 import data_split as dt\n", "from DataSplit.V_1_0_0 import data_drive_stat as ddt ##行驶数据按行驶段汇总统计\n", "from DataSplit.V_1_0_0 import data_charge_stat as dct ##充电数据按充电段汇总\n", "from DataSplit.V_1_0_0 import data_stand_stat as dst ##静置数据按静置段汇总\n", "from DataSplit.V_1_0_0 import data_drive_stat_period as ddtp ##行驶数据按充电周期汇总统计\n", "from DataSplit.V_1_0_0 import trans_day as trd\n", "from DataSplit.V_1_0_0 import stand_status as ss\n", "import pandas as pd" ] }, { "cell_type": "code", "execution_count": 3, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "start env: dev \n" ] } ], "source": [ "cur_env = 'dev' # 设置运行环境\n", "app_path = \"/home/likun/project/zlwl-algos/\" # 设置app绝对路径\n", "sysUtils = SysUtils(cur_env, app_path)\n", "mysql_algo_params = sysUtils.get_cf_param('mysql-algo')\n", "mysqlUtils = MysqlUtils()\n", "mysql_algo_engine, mysql_algo_Session= mysqlUtils.get_mysql_engine(mysql_algo_params)\n", "mysql_algo_conn = mysql_algo_engine.connect()\n", "hbase_params = sysUtils.get_cf_param('hbase-datafactory')\n", "iotp_service = IotpAlgoService(hbase_params=hbase_params)" ] }, { "cell_type": "code", "execution_count": 4, "metadata": {}, "outputs": [], "source": [ "organ_code='001009'" ] }, { "cell_type": "code", "execution_count": 5, "metadata": {}, "outputs": [], "source": [ "sql=\"select sn from t_device where organ_code='{}' \".format(organ_code)\n", "df_sn=pd.read_sql_query(sql, mysql_algo_conn)\n", "sn_list=list(df_sn[\"sn\"])" ] }, { "cell_type": "code", "execution_count": 6, "metadata": {}, "outputs": [ { "data": { "text/plain": [ "['PJXCLL128N234P001',\n", " 'PJXCLL128N234P004',\n", " 'PJXCLL128N234P005',\n", " 'PJXCLL128N234P007',\n", " 'PJXCLL128N234P011',\n", " 'PJXCLL128N234P002',\n", " 'PJXCLL128N234P003',\n", " 'PJXCLL128N234P006',\n", " 'PJXCLL128N234P010',\n", " 'PJXCLL128N234P008']" ] }, "execution_count": 6, "metadata": {}, "output_type": "execute_result" } ], "source": [ "sn_list" ] }, { "cell_type": "code", "execution_count": 7, "metadata": {}, "outputs": [], "source": [ "def split_sum(df_drive,df_charge,df_stand,sn_list,start_time1,end_time,mysql_algo_conn):\n", " if not df_drive.empty:\n", " df_drive_static_base=ddt.data_drive_stat(df_drive)\n", " df_drive_static_base[\"Time_e\"]=pd.to_datetime(df_drive_static_base[\"Time_e\"] )\n", " df_drive_static_base=df_drive_static_base[(df_drive_static_base[\"Time_e\"]>start_time1)&(df_drive_static_base[\"Time_e\"]<=end_time)]\n", " if not df_drive_static_base.empty:\n", " for sn in sn_list:\n", " df_new_drive=df_drive_static_base[df_drive_static_base[\"sn\"]==sn]\n", " if not df_new_drive.empty:\n", " trd.trans_day(df_new_drive,sn,start_time1,\"algo_dwd_df_drive_static_base\",mysql_algo_conn)\n", " df_new_drive=pd.DataFrame()\n", " df_drive_static_base.to_sql(\"algo_dwd_df_drive_static_base\",con=mysql_algo_conn, if_exists=\"append\",index=False)\n", "\n", " df_drive_static_period=ddtp.data_drive_stat_period(df_drive_static_base)\n", " df_drive_static_period[\"Time_e\"]=pd.to_datetime(df_drive_static_period[\"Time_e\"] )\n", " df_drive_static_period=df_drive_static_period[(df_drive_static_period[\"Time_e\"]>start_time1)&(df_drive_static_period[\"Time_e\"]<=end_time)]\n", " if not df_drive_static_period.empty:\n", " for sn in sn_list:\n", " df_new_period=df_drive_static_period[df_drive_static_period[\"sn\"]==sn]\n", " if not df_new_period.empty:\n", " trd.trans_day(df_new_period,sn,start_time1,\"algo_dwd_df_drive_static_period\",mysql_algo_conn)\n", " df_drive_static_period.to_sql(\"algo_dwd_df_drive_static_period\",con=mysql_algo_conn, if_exists=\"append\",index=False) \n", " \n", " if not df_charge.empty:\n", " df_charge_static_base=dct.data_charge_stat(df_charge)\n", " df_charge_static_base[\"Time_e\"]=pd.to_datetime(df_charge_static_base[\"Time_e\"] )\n", " df_charge_static_base=df_charge_static_base[(df_charge_static_base[\"Time_e\"]>start_time1)&(df_charge_static_base[\"Time_e\"]<=end_time)]\n", " if not df_charge_static_base.empty:\n", " for sn in sn_list:\n", " df_new_charge=df_charge_static_base[df_charge_static_base[\"sn\"]==sn]\n", " if not df_new_charge.empty:\n", " trd.trans_day(df_new_charge,sn,start_time1,\"algo_dwd_df_charge_static_base\",mysql_algo_conn)\n", " df_charge_static_base.to_sql(\"algo_dwd_df_charge_static_base\",con=mysql_algo_conn, if_exists=\"append\",index=False) \n", " \n", " if not df_stand.empty:\n", " df_stand_static_base=dst.data_stand_stat(df_stand)\n", " df_stand_static_base[\"Time_e\"]=pd.to_datetime(df_stand_static_base[\"Time_e\"] )\n", " df_stand_static_base=df_stand_static_base[(df_stand_static_base[\"Time_e\"]>start_time1)&(df_stand_static_base[\"Time_e\"]<=end_time)]\n", " if not df_stand_static_base.empty:\n", " for sn in sn_list:\n", " df_new_stand=df_stand_static_base[df_stand_static_base[\"sn\"]==sn]\n", " if not df_new_stand.empty:\n", " trd.trans_day(df_new_stand,sn,start_time1,\"algo_dwd_df_stand_static_base\",mysql_algo_conn)\n", " df_stand_static_base.to_sql(\"algo_dwd_df_stand_static_base\",con=mysql_algo_conn, if_exists=\"append\",index=False) \n", " " ] }, { "cell_type": "code", "execution_count": 8, "metadata": {}, "outputs": [], "source": [ "def test(time_zhui):\n", " now_time=pd.to_datetime(time_zhui)\n", " start_time=now_time-datetime.timedelta(hours=32)\n", " start_time=start_time.strftime('%Y-%m-%d %H:%M:%S')\n", " start_time1=now_time-datetime.timedelta(hours=24)\n", " start_time1=start_time1.strftime('%Y-%m-%d %H:%M:%S')\n", " end_time=now_time-datetime.timedelta(seconds=1)\n", " end_time=end_time.strftime('%Y-%m-%d %H:%M:%S')\n", " end_time1=now_time.strftime('%Y-%m-%d %H:%M:%S') \n", " \n", " try:\n", " columns = [ DataField.time, DataField.sn, DataField.pack_crnt, DataField.pack_volt, DataField.pack_soc,DataField.bms_sta,DataField.latitude,DataField.longitude]\n", " df_data_get = iotp_service.get_data(sn_list=sn_list, columns=columns, start_time=start_time, end_time=end_time)\n", " \n", " ##数据处理\n", " ##bms\n", " df_data=df_data_get[['sn','time','pack_crnt','pack_volt', 'pack_soc','bms_sta']][df_data_get['datatype']==12]\n", " ##gps\n", " df_gps=df_data_get[['sn','time','latitude','longitude']][df_data_get['datatype']==16]\n", " df_gps=df_gps.replace('',np.nan)\n", " df_gps=df_gps.dropna(axis=0,how='any')\n", " df_gps[\"latitude\"]=df_gps[\"latitude\"].astype(float)\n", " df_gps[\"longitude\"]=df_gps[\"longitude\"].astype(float)\n", " ##处理经纬度为0的情况\n", " df_gps=df_gps.replace(0,np.nan)\n", " df_gps=df_gps.sort_values([\"sn\",\"time\"],ascending = [True, True])\n", " df_gps_filled = df_gps.groupby(\"sn\").fillna(method='ffill')\n", " df_gps = pd.concat([df_gps[['sn']], df_gps_filled], axis=1)\n", " \n", " ##关联gps\n", " df_merge = pd.merge(df_data, df_gps, on=['sn','time'],how='outer')\n", " df_merge=ss.stand_status(df_merge,s_order_delta=600,lon_delta=0.01)\n", " \n", " df_merge=df_merge.sort_values([\"sn\",\"time\"],ascending = [True, True])\n", " df_merge_filled = df_merge.groupby(\"sn\").fillna(method='ffill')\n", " df_merge = pd.concat([df_merge[['sn']], df_merge_filled], axis=1)\n", " \n", " df_merge_bfilled = df_merge.groupby(\"sn\").fillna(method='bfill')\n", " df_merge = pd.concat([df_merge[['sn']], df_merge_bfilled], axis=1)\n", " df_merge=df_merge.dropna(subset=['pack_crnt','latitude','longitude'],axis=0,how='any')\n", " df_merge=ds.data_status(df_merge,c_soc_dif_p=0.05,s_soc_dif_p=0,c_order_delta=1200,s_order_delta=300)\n", " df_drive,df_charge,df_stand=dt.split(df_merge,drive_interval_time_min=1200,charge_interval_time_min=1200,stand_interval_time_min=1200,single_num_min=3,drive_sts=3,charge_sts=[21,22],stand_sts=0)\n", " split_sum(df_drive,df_charge,df_stand,sn_list,start_time1,end_time,mysql_algo_conn)\n", " except Exception as e:\n", " print(e)" ] }, { "cell_type": "code", "execution_count": 10, "metadata": {}, "outputs": [], "source": [ "rng1 = pd.date_range('2023-05-16 00:00:00','2023-05-18 00:00:00' , freq = '24H')" ] }, { "cell_type": "code", "execution_count": 11, "metadata": {}, "outputs": [], "source": [ "st=[i.strftime('%Y-%m-%d %H:%M:%S') for i in rng1]" ] }, { "cell_type": "code", "execution_count": 13, "metadata": {}, "outputs": [ { "name": "stdout", "output_type": "stream", "text": [ "PJXCLL128N234P001-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "连接hbase数据库\n", "连接hbase数据库 成功\n", "PJXCLL128N234P004-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P005-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P007-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P011-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P002-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P003-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P006-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P010-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "PJXCLL128N234P008-2023-05-14 16:00:00-2023-05-15 23:59:59开始取数.........\n", "Spend_time:3.9740753173828125 s\n", "PJXCLL128N234P008-2023-05-14 16:00:00-2023-05-15 23:59:59取数完成.........\n" ] }, { "name": "stderr", "output_type": "stream", "text": [ "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_status.py:12: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_merge[\"flag\"][df_merge[\"pack_crnt\"]<0]=\"c\"\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_status.py:13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_merge[\"flag\"][df_merge[\"pack_crnt\"]==0]=\"s\"\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_status.py:37: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_merge[\"bms_sta\"][df_merge_c21.index]=21\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_status.py:38: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_merge[\"bms_sta\"][df_merge_c22.index]=22\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_status.py:55: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_merge[\"bms_sta\"][df_merge_s2.index]=0\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:9: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive[\"order_delta\"]= pd.to_datetime(df_drive[\"time\"] )-pd.to_datetime( df_drive[\"time\"].shift(1).fillna(method = 'backfill',axis = 0))\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:10: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive[\"order_delta\"]=pd.to_timedelta(df_drive[\"order_delta\"])\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:11: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive[\"order_delta\"] = df_drive[\"order_delta\"].dt.total_seconds()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:13: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive[\"time_flag\"]=df_drive[\"order_delta\"]>drive_interval_time_min\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:14: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive['drive_block']=(df_drive[\"time_flag\"].shift(1) != df_drive[\"time_flag\"]).astype(int).cumsum()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:26: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_charge[\"order_delta\"]= pd.to_datetime(df_charge[\"time\"] )-pd.to_datetime( df_charge[\"time\"].shift(1).fillna(method = 'backfill',axis = 0))\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:27: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_charge[\"order_delta\"]=pd.to_timedelta(df_charge[\"order_delta\"])\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:28: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_charge[\"order_delta\"] = df_charge[\"order_delta\"].dt.total_seconds()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:30: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_charge[\"time_flag\"]=df_charge[\"order_delta\"]>charge_interval_time_min\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:31: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_charge['charge_block']=(df_charge[\"time_flag\"].shift(1) != df_charge[\"time_flag\"]).astype(int).cumsum()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:43: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_stand[\"order_delta\"]= pd.to_datetime(df_stand[\"time\"] )-pd.to_datetime( df_stand[\"time\"].shift(1).fillna(method = 'backfill',axis = 0))\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:44: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_stand[\"order_delta\"]=pd.to_timedelta(df_stand[\"order_delta\"])\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:45: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_stand[\"order_delta\"] = df_stand[\"order_delta\"].dt.total_seconds()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:47: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_stand[\"time_flag\"]=df_stand[\"order_delta\"]>stand_interval_time_min\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_split.py:48: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame.\n", "Try using .loc[row_indexer,col_indexer] = value instead\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_stand['stand_block']=(df_stand[\"time_flag\"].shift(1) != df_stand[\"time_flag\"]).astype(int).cumsum()\n", "/home/likun/project/zlwl-algos/USER/likun/testoneday/DataSplit/V_1_0_0/data_drive_stat_period.py:60: SettingWithCopyWarning: \n", "A value is trying to be set on a copy of a slice from a DataFrame\n", "\n", "See the caveats in the documentation: https://pandas.pydata.org/pandas-docs/stable/user_guide/indexing.html#returning-a-view-versus-a-copy\n", " df_drive_static_period[\"time_free\"][df_drive_static_period[\"time_free\"]<0]=9999\n" ] }, { "name": "stdout", "output_type": "stream", "text": [ "PJXCLL128N234P001-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P004-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P005-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P007-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P011-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P002-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P003-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P006-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P010-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "PJXCLL128N234P008-2023-05-15 16:00:00-2023-05-16 23:59:59开始取数.........\n", "Spend_time:4.773902177810669 s\n", "PJXCLL128N234P008-2023-05-15 16:00:00-2023-05-16 23:59:59取数完成.........\n", "PJXCLL128N234P001-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P004-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P005-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P007-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P011-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P002-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P003-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P006-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P010-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "PJXCLL128N234P008-2023-05-16 16:00:00-2023-05-17 23:59:59开始取数.........\n", "Spend_time:4.35683798789978 s\n", "PJXCLL128N234P008-2023-05-16 16:00:00-2023-05-17 23:59:59取数完成.........\n" ] } ], "source": [ "for time_zhui in st:\n", " test(time_zhui)" ] } ], "metadata": { "kernelspec": { "display_name": "py3916", "language": "python", "name": "python3" }, "language_info": { "codemirror_mode": { "name": "ipython", "version": 3 }, "file_extension": ".py", "mimetype": "text/x-python", "name": "python", "nbconvert_exporter": "python", "pygments_lexer": "ipython3", "version": "3.9.16" }, "orig_nbformat": 4 }, "nbformat": 4, "nbformat_minor": 2 }