线程分类方法、装置、电子设备及计算机可读介质
文献发布时间:2023-06-19 18:27:32
技术领域
本申请涉及计算机技术领域,更具体地,涉及一种线程分类方法、装置、电子设备及计算机可读介质。
背景技术
当前的用户智能手机CPU一般有多个核心,例如典型的八核心处理器。应用程序的线程,是可以公平的在这些处理器上运行的。目前,CPU依据各个线程的默认执行顺序为每个线程分配资源,线程在分配到资源的时候开始执行。然而,该方式使得线程的执行方式过于中庸,并没有针对性地考虑到线程运行时的用户需求。
发明内容
本申请提出了一种线程分类方法、装置、电子设备及计算机可读介质,以改善上述缺陷。
第一方面,本申请实施例提供了一种线程分类方法,应用于电子设备,所述方法包括:获取所述电子设备的多个线程的参考数据;基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性,所述线程属性包括第一属性和第二属性,所述第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关,其中,所述分类模型为预先基于样本线程的参考数据和样本线程被标记的线程属性训练的。
第二方面,本申请实施例还提供了一种线程分类装置,应用于电子设备,所述装置包括:获取单元和处理单元。获取单元,用于获取所述电子设备的多个线程的参考数据。处理单元,用于基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性,所述线程属性包括第一属性和第二属性,所述第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关,其中,所述分类模型为预先基于样本线程的参考数据和样本线程被标记的线程属性训练的。
第三方面,本申请实施例还提供了一种电子设备,包括:一个或多个处理器;存储器;一个或多个应用程序,其中所述一个或多个应用程序被存储在所述存储器中并被配置为由所述一个或多个处理器执行,所述一个或多个应用程序配置用于执行上述方法。
第四方面,本申请实施例还提供了一种计算机可读介质,所述计算机可读介质存储有处理器可执行的程序代码,所述程序代码被所述处理器执行时使所述处理器执行上述方法。
本申请提供的线程分类方法、装置、电子设备及计算机可读介质,基于所述电子设备的多个线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性,所述线程属性包括第一属性和第二属性,所述第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关。因此,本申请能够通过各个线程的参考数据将线程分为用户感知相关的线程和用户感知不相关的线程,以便为后续对线程的执行的优化提供依据。
本申请实施例的其他特征和优点将在随后的说明书阐述,并且,部分地从说明书中变得显而易见,或者通过实施本申请实施例而了解。本申请实施例的目的和其他优点可通过在所写的说明书、权利要求书、以及附图中所特别指出的结构来实现和获得。
附图说明
为了更清楚地说明本申请实施例中的技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本申请的一些实施例,对于本领域技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1示出了本申请一实施例提供的CPU的线程队列的示意图;
图2示出了本申请一实施例提供的线程分类方法的方法流程图;
图3示出了本申请另一实施例提供的线程分类方法的方法流程图;
图4示出了本申请一实施例提供的在服务器侧训练分类模型的示意图;
图5示出了本申请一实施例提供的在手机侧使用分类模型对线程标记的示意图;
图6示出了本申请一实施例提供的CPU的线程队列内第一属性和第二属性的示意图;
图7示出了本申请另一实施例提供的CPU的线程队列内第一属性和第二属性的示意图;
图8示出了本申请一实施例提供的线程分类装置的模块框图;
图9示出了本申请一实施例提供的电子设备的结构框图;
图10示出了本申请一实施例提供的计算机可读介质的结构框图;
图11示出了本申请一实施例提供的计算机程序产品的结构框图。
具体实施方式
为了使本技术领域的人员更好地理解本申请方案,下面将结合本申请实施例中附图,对本申请实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本申请一部分实施例,而不是全部的实施例。通常在此处附图中描述和示出的本申请实施例的组件可以以各种不同的配置来布置和设计。因此,以下对在附图中提供的本申请的实施例的详细描述并非旨在限制要求保护的本申请的范围,而是仅仅表示本申请的选定实施例。基于本申请的实施例,本领域技术人员在没有做出创造性劳动的前提下所获得的所有其他实施例,都属于本申请保护的范围。
应注意到:相似的标号和字母在下面的附图中表示类似项,因此,一旦某一项在一个附图中被定义,则在随后的附图中不需要对其进行进一步定义和解释。同时,在本申请的描述中,术语“第一”、“第二”等仅用于区分描述,而不能理解为指示或暗示相对重要性。
移动计算技术日新月异,以智能手机、平板电脑为代表的手持终端也得到了广泛普及和应用。随着移动计算技术的发展,特别是移动处理器技术的巨大进步,这些手持终端的应用范围从传统的通信、拍照功能发展到今天的智能手机和平板电脑普遍具有的高速上网、3D游戏、高清视频等功能。
手持智能终端搭载的移动处理器通常包含集成中央处理器(Central ProcessingUnit,CPU)和图像处理器(Graphics Processing Unit,GPU)两部分,CPU承担通用计算功能,GPU承担2D、3D图形绘制、运算、显示等功能。目前在智能手机、平板电脑等移动终端上运行的应用程序、游戏,播放高清视频对移动处理器的性能要求越来越高。
当前的用户智能手机CPU一般有多个核心,例如典型的八核心处理器。应用程序的线程,是可以公平的在这些处理器上运行的。目前,CPU依据各个线程的默认执行顺序为每个线程分配资源,线程在分配到资源的时候开始执行。如图1所示,假设电子设备包括8个CPU,分别命名为cpu0、cpu1、cpu2、cpu3、cpu4、cpu5、cpu6和cpu7,每个CPU对应一个任务队列,每个CPU对应的任务队列内包括多个线程,该线程是在该任务队列对应的CPU内执行,例如,线程11是在cpu0上执行的,线程74是在cpu6上执行。
由于用户的手机的应用程序可能有多个线程,当线程的数量超过CPU的核心数量时,就需要有一些线程任务等待一段时间才可以分配到资源。然而发明人在研究中发现,目前各个线程在CPU上的执行顺序并没有合理的设计,往往是基于系统默认的执行顺序在执行,而并没有针对性的为各个线程做分类以及基于该分类结果对线程的执行进行优化,使得线程的执行方式过于中庸,并没有针对性地考虑到线程运行时的用户需求。
请参阅图2,图2示出了本申请实施例提供了一种线程分类方法,应用于电子设备,所述方法包括:S201至S202。
S201:获取所述电子设备的多个线程的参考数据。
应用程序(application,APP)通常是多个程序的集合,每个程序对应一个进程,而每个进程下对应至少一个线程,也就是说,进程可以是单线程的,也可以是多线程的。可以理解的是,一个进程即是一个实例,也就是说,一个进程可以对应应用程序的一个功能,例如,应用程序的视频播放功能可以是应用程序的一个进程,通常,应用程序运行时的进程为主进程,应用程序下的各个功能可以是该主进程的子进程。
示例性地,线程的参考数据可以包括身份信息和运行数据,该身份信息可以包括用于表征该线程的身份的信息,例如,线程的名称或线程的应用程序的名称。线程的运行数据是指该线程的应用程序运行的时候,线程的运行环境或产生的数据,例如,该线程的运行数据可以包括运行时间、负载、所运行的CPU类型和运行周期。因此,每个线程的参考数据可以包括名称、运行时间、负载、所运行的CPU类型和运行周期的至少一种。
需要说明的是,线程的运行时间可以是线程的生命周期,具体地,在线程的生命周期中,它要经过新建(New)、就绪(Runnable)、运行(Running)、阻塞(Blocked)和死亡(Dead)五种状态。当程序使用new关键字创建了一个线程之后,该线程就处于一个新建状态(初始状态),此时它和其他Java对象一样,仅仅由Java虚拟机为其分配了内存,并初始化了其成员变量值。此时的线程对象没有表现出任何线程的动态特征,程序也不会执行线程的线程执行体。当线程对象调用了Thread.start()方法之后,该线程处于就绪状态,Java虚拟机会为其创建方法调用栈和程序计数器,处于这个状态的线程并没有开始运行,它只是表示该线程可以运行了。如果处于就绪状态的线程获得了CPU资源,就开始执行run方法的线程执行体,则该线程处于运行状态。阻塞状态是线程因为某种原因放弃CPU使用权,暂时停止运行。直到线程进入就绪状态,才有机会转到运行状态。run()方法执行完成,即运行技术的时候,线程会正常结束。需要说明的是,该线程的运行时间可以是线程从新建到结束的状态,也可以是从运行到结束的状态,具体在此不做限定。
线程对应的运行参数为负载数据,该负载数据可以是该线程的数据处理量,其中,该数据处理量可以是线程单位时间内所处理的数据,例如,该线程是音频播放线程,那么对应的数据处理量为单位时间内播放的音频数据,再例如,该线程为界面渲染相关的线程,那么对应的数据处理量为单位时间内该线程渲染的图像数据。另外,该负载数据还可以是该线程的处理器使用率,即CPU使用率。也就是说,该负载数据为线程所占用的CPU使用率,即处理器为该线程分配的资源。
CPU的类型可以包括大核和小核,具体地,CPU的类型与CPU的标识对应,例如,cpu0至cpu3均为小核,cup4至cpu7均为大核,则确定线程所运行的CPU的标识,再基于CPU标识与类型的对应关系确定线程所运行的CPU的类型。具体地,线程所运行的的CPU是指在该CPU上运行的线程,即该线程在该CPU的任务队列中。具体地,每个CPU具有task运行队列,在该CPU上运行的线程,该线程的标识在该CPU的task运行队列,所以,通过查看该目标处理器的task运行队列,就能够确定该目标线程所运行的CPU,进而确定该CPU对应的类型,即是大核心还是小核心。
线程的运行周期是指该线程的运行间隔,可以是该线程的连续两次运行的时间间隔,具体地,可以确定在预设时间段内线程每次被运行的时刻,基于该每次被运行的时刻能够确定该线程在预设时间段内连续两次运行的平均时间间隔,作为该线程的运行周期。作为一种实施方式,线程的执行间隔能够表征该线程执行一次之后,再次被执行的时间间隔,例如,线程是按照指定时间周期执行的,因此,该执行间隔可以是连续两次执行线程之间的时间间隔。例如,在显示视频画面或音频播放的时候,采用时间间隔的方式,间隔执行该视频画面显示或音频播放相关的线程,从而间隔显示画面或播放音频,即能够降低功耗,又能够使用户在听觉和视觉上感知到视频画面或音频的连续性。
作为一种实施方式,该多个线程的参考数据可以基于电子设备内安装的Systrace软件来采集,具体地,在电子设备运行的时候,电子设备获取Systrace软件采集的数据,即Systrace文件,通过分析该Systrace文件可以得到电子设备的每个线程的参考数据。
S202:基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性。
作为一种实施方式,该线程属性可以包括第一属性和第二属性,其中,第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关。具体地,用户感知相关可以是指与用户的视觉、听觉和触感的至少一个具有感知,也就是说,线程如果为第一属性则表示该线程为与用户交互相关的线程。则如果线程为第二属性则表示该线程与用户的视觉、听觉和触感互关,即不属于与用户交互相关的线程。
具体地,与用户交互相关的线程,可以是指该线程用于获取用户操作应用程序时产生的操作数据,还可以是该线程用于输出与用户感知相关的数据。针对前者,用户操作可以是用户在应用程序的某个界面上的滑动操作、点击操作等,则应用程序包括能够检测滑动操作和点击操作的线程,则该线程属于与用户交互相关的线程。针对后者,输出与用户感知相关的数据可以是播放音频数据和视频数据等能够被用户听觉或视觉感知的数据。
另外,该与用户交互相关的线程还可以是与应用程序的各个显示界面相关的线程,即服务于显示界面的线程。例如,以应用程序的某个视频播放界面为例,视频播放界面上设置有视频播放控件,则用于服务于视频播放控件以使视频播放控件能够播放视频的线程就属于与用户交互相关的线程。
则前述的用户操作相关的数据、能够被用户感知的数据或者应用程序所显示的界面,对于用户来说,都属于与用户交互相关的数据,则能够产生或者获取这些数据的线程相比一些在后台运行而与用户不存在交互的线程相比,如果产生卡顿,那用户能够强烈感知到。
需要说明的是,分类模型为预先基于样本线程的参考数据和样本线程被标记的线程属性训练的。分类模型的训练过程将在后续实施例中描述。
因此,在得到每个线程的属性之后,在线程的后续执行的时候,可以基于该线程的属性设定执行策略。在一些实施例中,可以在CPU的执行队列中,将第一属性的优先级设置为高于第二属性的优先级,从而在线程的执行的时候,优先执行第一属性的线程,因为,与用户感知相关的线程在执行的时候需要优先考虑到执行效率,否则,如果执行的时候因为执行速度过慢容易导致卡顿,而导致用户能够强烈的感知到线程的卡顿而降低用户体验。
在另一些实施例中,在CPU进入休眠状态的时候,可以在第一属性的线程执行之后,且在CPU满足进入睡眠条件的时候,控制CPU进入能够快速唤醒的低功耗模式。通常,电子设备对应有多个不同的低功耗模式,这些多个低功耗模式被统称为C-state,处理器在进入休眠模式之后,通过处理器内部的idle unit将至少部分时钟和/或电源关闭。具体地,C-state可以被划分为多个idle状态,其中,C0为正常工作模式,其他的"C1~Cn"为休眠模式,从而处理器在进入休眠模式的时候,可以直接进入休眠模式,即cpuidle,其中,"C1~Cn"的不同的idle下进入的休眠模式中,关闭的时钟和/或电源是不同的,即不同的休眠模式下关闭的时钟和/或电源的数量可能不同,但是,进入或退出休眠模式都需要花费时间,即时钟和/或电源的关闭和开启也需要消耗时间和功耗,这即是进入休眠模式的代价。另外,有些休眠模式下,只关闭部分时钟和/或电源,而有些休眠模式下,关闭全部的时钟和/或电源,其中,n越大,被关闭的时钟和/或电源的数量越多,电子设备的功耗越低且越省电,但被唤醒的耗时(即退出休眠模式的耗时)也越长。因此,可以为第一属性的线程配置属性比较浅的低功耗模式,即休眠模式,从而在该线程执行结束,CPU需要进入休眠模式的时候,可以进入比较浅的休眠模式。具体地,该多个休眠模式包括第一休眠模式和第二休眠模式,第一休眠模式的唤醒耗时小于所述第二休眠模式的唤醒耗时。作为一种实施方式,该第一休眠模式可以称为浅度idle,第二休眠模式可以称为深度idle,浅度idle与深度idle,唤醒耗时更短,但是,功耗更高,并且,浅度idle下处理器所关闭的硬件的数量相比深度idle下处理器所关闭的硬件的数量更小。因此,针对第一属性的线程,将浅度idle作为指定休眠模式,当满足睡眠条件时,控制所述电子设备进入所述指定休眠模式,从而在处理器进入浅度idle的时候,可以迅速被唤醒,从而可以保证第一属性的线程能够快速执行,减少该线程再次被执行时的卡顿。
请参阅图3,图3示出了本申请实施例提供了一种线程分类方法,应用于电子设备,所述方法包括:S301至S305。
S301:获取所述电子设备的多个样本线程的参考数据和每个所述样本线程被标记的线程属性。
作为一种实施方式,该样本线程可以是在分类模型的训练阶段,在电子设备的使用过程运行的线程,命名为样本线程,该样本线程对应的参考数据可以被采集到,然后,再对该样本线程标记线程属性,该对样本线程标记属性的过程是由人工参与。示例性地,如图4所示,可以是在服务器侧完成对分类模型的训练。服务器可以收集各个手机上传的线程的参考数据,将所收集的线程作为样本线程,由工程师对样本线程进行标注,以得到每个线程的属性标签,该属性标签为对应第一属性和第二属性的标签。
S302:将每个所述样本线程的参考数据和所述线程属性输入初始的分类模型,训练所述初始的分类模型。
然后,将该样本线程的参考数据和样本线程对应的线程属性输入初始的分类模型,具体地,每个样本线程的参考数据中的每个数据作为一个特征点,从而每个样本相乘的参考数据作为该样本线程的特征向量,人工标注的样本线程的线程属性的属性标签作为该线程的期望分类结果,然后,该分类模型基于该样本线程的特征向量得到该样本线程的实际分类结果,基于该实际分类结果与期望分类结果的差值训练该初始的分类模型,通过不断的迭代训练,完成对该初始的分类模型的训练,训练后的分类模型能够基于线程的参考数据将所述线程分类为第一属性和第二属性。
需要说明的是,该分类模型可以是人工智能模型,即AI模型,人工智能(Artificial Intelligence,AI)是一种利用数字计算机来模拟人类感知环境、获取知识并使用知识的技术,该技术可以使机器具有类似于人类的感知、推理与决策的功能。人工智能基础技术一般包括如传感器、专用人工智能芯片、云计算、分布式存储、大数据处理技术、操作/交互系统、机电一体化等技术。人工智能软件技术主要包括计算机视觉技术、语音处理技术、自然语言处理技术以及机器学习/深度学习、自动驾驶、智慧交通等几大方向。
其中,计算机视觉(Computer Vision,CV)是利用计算机代替人眼对目标图像进行识别、测量等操作并进一步进行处理的技术。计算机视觉技术通常包括图像处理、图像识别、图像语义理解、图像检索、虚拟现实、增强现实、同步定位与地图构建、自动驾驶、智慧交通等等技术,,还包括常见的人脸识别、指纹识别等生物特征识别技术。比如,图像着色、图像描边提取等图像处理技术。
语音技术(Speech Technology)的关键技术有自动语音识别技术和语音合成技术以及声纹识别技术。让计算机能听、能看、能说、能感觉,是未来人机交互的发展方向,其中语音成为未来最被看好的人机交互方式之一。
自然语言处理(Nature Language processing,NLP)是计算机科学领域与人工智能领域中的一个重要方向。它研究能实现人与计算机之间用自然语言进行有效通信的各种理论和方法。自然语言处理是一门融语言学、计算机科学、数学于一体的科学。因此,这一领域的研究将涉及自然语言,即人们日常使用的语言,所以它与语言学的研究有着密切的联系。自然语言处理技术通常包括文本处理、语义理解、机器翻译、机器人问答、知识图谱等技术。
机器学习(Machine Learning,ML)是一门多领域交叉学科,涉及概率论、统计学、逼近论、凸分析、算法复杂度理论等多门学科。专门研究计算机怎样模拟或实现人类的学习行为,以获取新的知识或技能,重新组织已有的知识结构使之不断改善自身的性能。机器学习是人工智能的核心,是使计算机具有智能的根本途径,其应用遍及人工智能的各个领域。机器学习和深度学习通常包括人工神经网络、置信网络、强化学习、迁移学习、归纳学习、式教学习等技术。
自动驾驶技术通常包括高精地图、环境感知、行为决策、路径规划、运动控制等技术,自定驾驶技术有着广泛的应用前景,
随着人工智能技术研究和进步,人工智能技术在多个领域展开研究和应用,例如常见的智能家居、智能穿戴设备、虚拟助理、智能音箱、智能营销、无人驾驶、自动驾驶、无人机、机器人、智能医疗、智能客服、车联网、自动驾驶、智慧交通等,相信随着技术的发展,人工智能技术将在更多的领域得到应用,并发挥越来越重要的价值。
于本申请实施例中,该分类模型可以是深度学习模型,深度学习就是把计算机要学习的东西看成一大堆数据,把这些数据丢进一个复杂的、包含多个层级的数据处理网络(深度神经网络),然后检查经过这个网络处理得到的结果数据是不是符合要求——如果符合,就保留这个网络作为目标模型,如果不符合,就一次次地、锲而不舍地调整网络的参数设置,直到输出满足要求为止。
需要说明的是,该参考数据可以包括名称、运行时间、负载、所运行的CPU类型和运行周期的至少一种。由于第一属性的线程的参考数据只存共性,通过前述的分类模型通过样本线程的参考数据和属性标签的学习,使得该分类模型能够学习到属于第一属性的不同的线程的参考数据之间的共性,例如,分类模型通过学习可以确定,属于第一属性的不同的线程的名称存在相同的字符,再例如,该负载数据为目标线程所占用的CPU使用率,即处理器为该目标线程分配的资源。目标线程所占用的CPU使用率的大小,能够反应该目标线程的活跃性,例如,以当前运行的场景为前台应用的界面渲染场景为例,该目标线程为界面渲染相关的线程,那么目标线程的CPU使用率越高,可以表征该目标线程不断刷新界面显示内容的频率越高。所以,可以认为,如果线程的CPU使用率较高,则该线程与用户感知相关的可能性更高,例如,界面渲染或者视频播放的线程的CPU使用率通常较高。再者,对于运行时间和运行周期来说,用户感知相关的线程往往运行时间较长以及运行间隔较短,例如,音频播放相关的线程,电子设备设置了音频播放线程的执行间隔,例如,可以设置为4ms,也就是说,音频播放软件在播放目标音频的时候,该音频播放线程每间隔4ms播放该目标音频的一个片段,则在该片段播放完毕,CPU就会进入空闲状态,再播放下一个片段。另外,用户感知相关的线程往往数据处理量较大,所以,往往都分布在大核。
需要说明的是,前述的参考数据为名称、运行时间、负载、所运行的CPU类型和运行周期的时候,可以针对每个数据设置一个通道,分类模型最后基于各个通道的特征值综合考虑得到分类结果。
S303:获取所述电子设备的多个线程的参考数据。
S304:基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性。
作为一种实施方式,通过前述的分类模型的训练之后,得到训练好的分类模型,之后将该分类模型布局在电子设备,即手机侧,具体地,如图5所示,在电子设备端测开发基于用户可感知的技术任务分类中心软件(UA center),通过任务分类中心软件,加载训练好的AI深度学习模型。然后,电子设备可以在预设条件下获取所述电子设备的多个线程的参考数据,然后,将该多个线程的参考数据作为输入源头,输入分类中心软件,分类中心软件调用AI深度学习模型分析该多个线程的参考数据,以得到每个线程的属性标签。
示例性地,电子设备可以在预设条件下获取所述电子设备的多个线程的参考数据,并且基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性。其中,该预设条件可以是采样间隔时间到达,具体地,该采样间隔是电子设备所设置的用于实时分析电子设备的各个线程的线程属性的时间间隔,例如,该采样间隔可以是100ms、50ms等,从而可以没间隔该采样间隔对当前的线程分析该线程的属性。
作为另一种实施方式,该预设条件可以是电子设备处于被使用状态,即当检测到所述电子设备处于被使用状态的情况下,获取所述电子设备的多个线程的参考数据。示例性地,该电子设备处于被使用状态可以是电子设备的前台或后台有应用程序在运行,具体地,有应用程序在后台运行是指存在应用程序在后台传输或处理数据,并且单位时间内的数据处理量大于指定数据量,具体地,该指定数据量可以基于实际需求而设定,该指定数据量用于区分在后台刷新和在后台处理数据的线程,例如,某社交应用程序的负责接收实时消息的线程与音频播放线程相比,处理的数据量更小,即某社交应用程序的负责接收实时消息的线程单位时间内的数据处理量小于指定数据量,音频播放线程单位时间内的数据处理量大于指定数据量。
作为另一种实施方式,该预设条件可以是电子设备存在应用程序在前台运行。作为又一种实施方式,该预设条件还可以是电子设备运行有指定类型的应用程序,该指定类型可以是存在界面绘制操作的应用程序,例如,浏览器、视频播放软件、社交软件等,针对后台运行的应用程序,该指定类型可以是音频播放程序。
需要说明的是,应用程序的类别,可以是应用程序的开发商在开发的时候为应用程序设定的类别,也可以是应用程序在安装在电子设备上之后,用户为应用程序设定的类别,例如,用户在电子设备上安装某个应用程序,在安装完成并进入该应用程序之后,会显示一个对话框,指示用户为应用程序设定类别。则应用程序具体属于哪个类别,可以由用户根据需求而设定,例如,用户可以将某社交软件设置为音频类,或者设置为视频类,或者设置为社交类。
另外,电子设备内安装有应用程序安装软件,例如ios系统内的Appstore。则在该应用程序安装软件内设置有应用程序列表,在该列表内用户能够下载应用程序并且能够更新和打开应用程序,而且该应用程序安装软件可以将不同的应用程序按照类别现实,比如,音频类、视频类或者游戏类等。因此,用户在使用该应用程序安装软件安装应用程序的时候,就已经能够知道该应用程序的类别。
另外,考虑到有些应用程序可以播放视频也可以播放音频,则如果该应用程序支持视频播放的功能,就将该应用程序的类型设置为视频类型,如果不支持视频播放的功能,而仅仅支持音频播放的功能,则就将该应用程序的类型设置为音频类型。而具体地,应用程序是否支持视频播放功能,可以通过该应用程序的功能描述信息中,所包含的功能描述,例如,所支持的播放格式来判断是否支持视频格式的播放,也可以通过检测该应用程序的程序模块内是否播放视频播放模块,例如,某个视频播放的编解码算法等,从而能够确定该应用程序是否支持视频播放功能。
再者,如果有些应用程序的功能多样化,则需要根据应用程序的具体操作行为而确定该应用程序的类别,例如,如果有些应用程序能够播放视频,也能够播放音频,例如一些视频播放软件,可以播放纯音频文件,也可以播放视频,则该应用程序的类别可以根据应用程序的使用记录而确定,即根据该应用程序的一定时间段内的使用记录,确定用户使用该应用程序是倾向于播放视频还是更倾向于播放音频。
具体地,获取该应用程序在预设时间段内的所有用户的操作行为数据,其中,所有用户是指安装过该应用程序的所有用户,则该操作行为数据可以由应用程序对应的服务器内获取,也就是说,用户在使用该应用程序的时候会使用用户对应的用户账号登录该应用程序,而用户账号对应的操作行为数据会发送至应用程序对应的服务器,则服务器将所获取的操作行为数据与用户账号对应存储。在一些实施例中,电子设备发送针对应用程序的操作行为查询请求发送至该应用程序对应的服务器,服务器将一定预设时间段内的所有用户的操作行为数据发送至电子设备。
该操作行为数据包括所播放的音频文件的名称和时间、以及所播放的视频文件的名称和时间,通过分析该操作行为数据就能够确定在一定预设时间段内该应用程序播放的音频文件的数量以及总的时间,也可以得到该应用程序播放的视频文件的数量以及总的时间,则根据音频和视频文件的播放总时长在该预定时间段内的占比,确定应用程序的类别,具体地,获取音频和视频文件的播放总时长在该预定时间段内的占比,为方便描述,将音频文件的播放总时长在该预定时间段内的占比记为音频播放占比,将视频文件的播放总时长在该预定时间段内的占比记为视频播放占比,如果视频播放占比大于音频播放占比,则将应用程序的类别设定为视频类型,如果音频播放占比大于视频播放占比,则将应用程序的类别设定为音频类型。例如,预设时间段为30天,即720小时,而音频文件的播放总时长为200小时,则音频播放占比为27.8%,视频文件的播放总时长为330小时,则视频播放占比为45.8%,则视频播放占比大于音频播放占比,则将应用程序的类别设定为视频类型。
需要说明的是,当检测到所述电子设备处于被使用状态的情况下,获取所述电子设备的多个线程的参考数据的实施方式可以是,如当前时间段位于指定时间段内,检测到所述电子设备的工作状态,若电子设备的工作状态为处于被使用状态的情况下,则获取所述电子设备的多个线程的参考数据。其中,指定时间段可以是用户睡眠时间段之外的时间段,另外,该指定时间段也可以基于用户使用电子设备的时间段而统计得到,具体地,获取在统计时间段内,每天用户使用电子设备的时间段,将该统计时间段内用户的使用时间段统计,以得到该指定时间段。
S305:在线程队列中,基于每个线程的线程属性为每个线程设置不同的标记。
示例性地,该多个线程为所述电子设备的CPU的线程队列中的线程,所述基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性之后,在所述线程队列中,基于每个线程的线程属性为每个线程设置不同的标记,其中,第一属性的线程和第二属性的线程采用不同的标记。
作为一种实施方式,以图1所示的线程队列为例,通过分类模型基于该线程队列中的每个线程的参考数据得到每个线程的线程属性,然后,在该线程队列内基于线程属性对每个线程标记,以便技术人员或者操作系统通过该标记能够明确知晓线程队列中的各个线程是第一属性还是第二属性。具体地,如图6所示,被阴影填充的线程表示的是线程属性为第一属性的线程,其他未被阴影填充的线程表示的是线程属性为第二属性的线程,该线程队列可以保存为图片,以为其他的人员通过该图片能够查看得知哪些线程是第一属性,哪些线程是第二属性。
作为另一种实施方式,由于该第一属性表征的是与用户感知相关的属性,而用户的感知可以包括视觉感知、听觉感知和触觉感知,需要说明的是,与用户交互相关的线程,可以是指该线程用于获取用户操作应用程序时产生的操作数据,还可以是该线程用于输出与用户感知相关的数据。针对前者,用户操作可以是用户在应用程序的某个界面上的滑动操作、点击操作等,则应用程序包括能够检测滑动操作和点击操作的线程,则该线程属于与用户交互相关的线程。针对后者,输出与用户感知相关的数据可以是播放音频数据和视频数据等能够被用户听觉或视觉感知的数据。因此,可以将视觉感知、听觉感知和触觉感知相关的线程都归于与用户感知相关的线程。具体地,第一属性包括第一子属性、第二子属性和第三子属性,所述第一子属性用于表征线程与用户视觉相关,所述第二子属性用于表征线程与用户听觉相关,所述第三子属性用于表征线程与触觉视觉相关。如图7所示,黑点填充的线程表示的是第一子属性的线程,灰色填充区域的线程表示的是第二子属性的线程,网格线填充的线程便是的第三子属性的线程。
需要说明的是,前述的图6和图7所示的填充方案仅仅是一种实例,当然,也可以是其他的填充方式。
请参阅图8,其示出了本申请实施例提供的一种线程分类装置800的结构框图,该装置可以包括:获取单元801和处理单元802。
获取单元801,用于获取所述电子设备的多个线程的参考数据。
进一步的,获取单元801还用于当检测到所述电子设备处于被使用状态的情况下,获取所述电子设备的多个线程的参考数据。
处理单元802,用于基于每个所述线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性,所述线程属性包括第一属性和第二属性,所述第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关,其中,所述分类模型为预先基于样本线程的参考数据和样本线程被标记的线程属性训练的。
进一步的,线程分类装置800还包括训练单元,用于获取所述电子设备的多个样本线程的参考数据和每个所述样本线程被标记的线程属性;将每个所述样本线程的参考数据和所述线程属性输入初始的分类模型,训练所述初始的分类模型,其中,训练后的分类模型能够基于线程的参考数据将所述线程分类为第一属性和第二属性。其中,分类模型为深度学习模型。
进一步的,参考数据包括名称、运行时间、负载、所运行的CPU类型和运行周期的至少一种。
进一步的,第一属性包括第一子属性、第二子属性和第三子属性,所述第一子属性用于表征线程与用户视觉相关,所述第二子属性用于表征线程与用户听觉相关,所述第三子属性用于表征线程与触觉视觉相关。
进一步的,多个线程为所述电子设备的CPU的线程队列中的线程,线程分类装置800还包括标记单元,用于在所述线程队列中,基于每个线程的线程属性为每个线程设置不同的标记,其中,第一属性的线程和第二属性的线程采用不同的标记。
所属领域的技术人员可以清楚地了解到,为描述的方便和简洁,上述描述装置和模块的具体工作过程,可以参考前述方法实施例中的对应过程,在此不再赘述。
在本申请所提供的几个实施例中,模块相互之间的耦合可以是电性,机械或其它形式的耦合。
另外,在本申请各个实施例中的各功能模块可以集成在一个处理模块中,也可以是各个模块单独物理存在,也可以两个或两个以上模块集成在一个模块中。上述集成的模块既可以采用硬件的形式实现,也可以采用软件功能模块的形式实现。
请参考图9,其示出了本申请实施例提供的一种电子设备的结构框图。该电子设备100可以是智能手机、平板电脑、电子书等能够运行应用程序的电子设备。本申请中的电子设备100可以包括一个或多个如下部件:处理器110、存储器120、以及一个或多个应用程序,其中一个或多个应用程序可以被存储在存储器120中并被配置为由一个或多个处理器110执行,一个或多个程序配置用于执行如前述方法实施例所描述的方法。
处理器110可以包括一个或者多个处理核。处理器110利用各种接口和线路连接整个电子设备100内的各个部分,通过运行或执行存储在存储器120内的指令、程序、代码集或指令集,以及调用存储在存储器120内的数据,执行电子设备100的各种功能和处理数据。可选地,处理器110可以采用数字信号处理(Digital Signal Processing,DSP)、现场可编程门阵列(Field-Programmable Gate Array,FPGA)、可编程逻辑阵列(Programmable LogicArray,PLA)中的至少一种硬件形式来实现。处理器110可集成中央处理器(CentralProcessing Unit,CPU)、图像处理器(Graphics Processing Unit,GPU)和调制解调器等中的一种或几种的组合。其中,CPU主要处理操作系统、用户界面和应用程序等;GPU用于负责显示内容的渲染和绘制;调制解调器用于处理无线通信。可以理解的是,上述调制解调器也可以不集成到处理器110中,单独通过一块通信芯片进行实现。
存储器120可以包括随机存储器(Random Access Memory,RAM),也可以包括只读存储器(Read-Only Memory)。存储器120可用于存储指令、程序、代码、代码集或指令集。存储器120可包括存储程序区和存储数据区,其中,存储程序区可存储用于实现操作系统的指令、用于实现至少一个功能的指令(比如触控功能、声音播放功能、图像播放功能等)、用于实现下述各个方法实施例的指令等。存储数据区还可以存储电子设备100在使用中所创建的数据(比如电话本、音视频数据、聊天记录数据)等。
请参考图10,其示出了本申请实施例提供的一种计算机可读存储介质的结构框图。该计算机可读介质1000中存储有程序代码,所述程序代码可被处理器调用执行上述方法实施例中所描述的方法。
计算机可读存储介质1000可以是诸如闪存、EEPROM(电可擦除可编程只读存储器)、EPROM、硬盘或者ROM之类的电子存储器。可选地,计算机可读存储介质1000包括非易失性计算机可读介质(non-transitory computer-readable storage medium)。计算机可读存储介质1000具有执行上述方法中的任何方法步骤的程序代码1010的存储空间。这些程序代码可以从一个或者多个计算机程序产品中读出或者写入到这一个或者多个计算机程序产品中。程序代码1010可以例如以适当形式进行压缩。
请参考图11,其示出了本申请实施例提供的一种计算机程序产品1100的结构框图。计算机程序产品包括计算机程序/指令1110,该计算机程序/指令被处理器执行时实现上述方法。
综上所述,本申请实施例基于所述电子设备的多个线程的参考数据,通过预先训练的分类模型确定每个线程对应的线程属性,所述线程属性包括第一属性和第二属性,所述第一属性用于表征线程与用户感知相关,所述第二属性用于表征线程与用户感知不相关。因此,本申请能够通过各个线程的参考数据将线程分为用户感知相关的线程和用户感知不相关的线程,以便为后续对线程的执行的优化提供依据。利用服务器端AI分类训练好的模型,对端侧的所有程序的线程任务进行分类,最终分类出用户可感知的触觉、视觉、听觉相关的线程任务和用户不可感知的后台线程任务,通过分类后,可将用于后续一系列针对用户感知的线程任务的优化策略。
最后应说明的是:以上实施例仅用以说明本申请的技术方案,而非对其限制;尽管参照前述实施例对本申请进行了详细的说明,本领域的普通技术人员当理解:其依然可以对前述各实施例所记载的技术方案进行修改,或者对其中部分技术特征进行等同替换;而这些修改或者替换,并不驱使相应技术方案的本质脱离本申请各实施例技术方案的精神和范围。
- 分类器训练方法、装置、电子设备及计算机可读介质
- 机器人控制方法、装置、电子设备和计算机可读存储介质
- 视频处理方法、装置、电子设备及计算机可读介质
- Monkey测试方法、装置、电子设备及计算机可读存储介质
- 线程执行方法、装置、电子设备及计算机可读介质及产品
- 远线程注入方法、装置、电子设备及计算机可读存储介质