CN107256180B - 数据处理方法、装置及终端 - Google Patents
数据处理方法、装置及终端 Download PDFInfo
- Publication number
- CN107256180B CN107256180B CN201710365867.0A CN201710365867A CN107256180B CN 107256180 B CN107256180 B CN 107256180B CN 201710365867 A CN201710365867 A CN 201710365867A CN 107256180 B CN107256180 B CN 107256180B
- Authority
- CN
- China
- Prior art keywords
- thread
- data
- task queue
- terminal
- queue
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Active
Links
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/46—Multiprogramming arrangements
- G06F9/50—Allocation of resources, e.g. of the central processing unit [CPU]
- G06F9/5005—Allocation of resources, e.g. of the central processing unit [CPU] to service a request
- G06F9/5027—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals
- G06F9/5038—Allocation of resources, e.g. of the central processing unit [CPU] to service a request the resource being a machine, e.g. CPUs, Servers, Terminals considering the execution order of a plurality of tasks, e.g. taking priority or time dependency constraints into consideration
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F16/00—Information retrieval; Database structures therefor; File system structures therefor
- G06F16/90—Details of database functions independent of the retrieved data types
- G06F16/95—Retrieval from the web
- G06F16/951—Indexing; Web crawling techniques
Landscapes
- Engineering & Computer Science (AREA)
- Theoretical Computer Science (AREA)
- Software Systems (AREA)
- Physics & Mathematics (AREA)
- General Engineering & Computer Science (AREA)
- General Physics & Mathematics (AREA)
- Databases & Information Systems (AREA)
- Data Mining & Analysis (AREA)
- Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
Abstract
本发明实施例公开了数据处理方法、装置及终端,其中,所述方法应用于终端,所述终端运行有第一线程和第二线程,所述方法包括:通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中;释放所述第一线程所占用的系统资源,所述系统资源包括CPU资源、内存资源或者I/O资源;通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中。采用本发明实施例,可以提高系统资源利用率,并提升第一线程获取数据的数据获取效率。
Description
技术领域
本发明涉及互联网技术领域,尤其涉及数据处理方法、装置及终端。
背景技术
随着互联网技术的发展,互联网中的数据呈爆发式增长,为了提升数据处理速度,可以采用多线程技术进行数据处理。以网络爬虫为例,网络爬虫是一个自动提取网页的程序,它为搜索引擎从万维网上下载网页,是搜索引擎的重要组成。在传统网页爬取技术中,为了提升网页爬取速度,往往采用多线程技术进行爬取。其中每个线程各自负责网页数据的解析和持久化,例如采用三个线程进行网页爬取,第一线程对网页数据进行解析,并将解析得到的网页数据写入数据库之后才可以释放占用的系统资源,同理,第二线程对网页数据进行解析,并将解析得到的网页数据写入数据库之后才可以释放占用的系统资源,第三线程对网页数据进行解析,并将解析得到的网页数据写入数据库之后才可以释放占用的系统资源,则各个线程占用的系统资源的时间较长,降低系统资源利用率。另外,每个线程在爬取网页数据、对爬取到的网页数据进行解析以及持久化存储之后,才可以结束本次流程,以便再次执行爬取网页数据、对爬取到的网页数据进行解析以及持久化存储的操作,导致爬取网页数据的效率较低。
发明内容
本发明实施例提供一种数据处理方法、装置及终端,可提高系统资源利用率,并提升第一线程获取数据的数据获取效率。
一方面,本发明实施例提供了一种数据处理方法,所述方法应用于终端,所述终端运行有第一线程和第二线程,所述方法包括:
通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中;
释放所述第一线程所占用的系统资源,所述系统资源包括CPU资源、内存资源或者I/O资源;
通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中。
相应地,本发明实施例还提供了一种数据处理装置,所述装置应用于终端,所述终端运行有第一线程和第二线程,所述装置包括:
数据获取单元,用于通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中;
资源释放单元,用于释放所述第一线程所占用的系统资源,所述系统资源包括CPU资源、内存资源或者I/O资源;
数据存储单元,用于通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中。
相应地,本发明实施例还提供了一种终端,该终端包括所述的数据处理装置。
本发明实施例可以通过第一线程获取需要存储的数据,并将该数据存储到任务队列中之后,释放第一线程所占用的系统资源,可提升资源利用率,另外,通过第一线程获取需要存储的数据,然后通过第二线程将该数据存储到数据库,可提升第一线程获取数据的数据获取效率。
附图说明
为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1是本发明实施例的一种数据处理系统的结构示意图;
图2是本发明实施例中的一种数据处理方法的流程示意图;
图3是本发明实施例的另一种数据处理方法的流程示意图;
图4是本发明实施例的一种数据处理装置的结构示意图;
图5是本发明实施例的一种终端的结构示意图。
具体实施方式
下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员在没有作出创造性劳动前提下所获得的所有其他实施例,都属于本发明保护的范围。
本发明实施例可以通过第一线程获取需要存储的数据,并将该数据存储到任务队列中,进而释放第一线程所占用的系统资源,相对传统的数据处理方法中第一线程获取需要存储的数据,将该数据存储到数据库中之后,才可以释放第一线程所占用的系统资源,本发明实施例可及时释放系统资源,以提高系统资源利用率。另外,本发明实施例中第一线程用于获取需要存储的数据,并将该数据存储到任务队列中,所述第一线程可以为一个网页爬虫线程。第二线程用于在任务队列中获取数据,并将该数据存储到数据库中,所述第二线程可以专用于存储网页爬虫线程爬取的数据。本发明实施例中第一线程将数据存储到任务队列中之后,可重新分配系统资源,并使用重新分配的系统资源再次获取需要存储的数据,相对传统的数据处理方法中第一线程获取需要存储的数据,并将该数据存储到数据库中之后,才可以重新分配系统资源,并使用重新分配的系统资源再次获取需要存储的数据,本发明实施例可提升第一线程获取数据的数据获取效率。
基于上述原理,本发明实施例提供了一种数据处理系统,该系统可以为诸如网页爬取系统、多文件传输系统等互联网应用系统。参见图1,该数据处理系统的架构至少包括:至少一个第一线程、任务队列以及至少一个第二线程。
其中,至少一个第一线程用于获取需要存储的数据,并将该数据存储到任务队列中。例如,在网页爬取过程中,第一线程将爬取到的网页数据写入任务队列之后,就可以结束该第一线程,并释放第一线程所占用的系统资源,进而可以启动新的第一线程,重新给该新的第一线程分配系统资源,并通过该第一线程使用重新分配的系统资源爬取其他网页数据。又如,在多文件传输过程中,第一线程获取到需要传输的文件数据之后,将该文件数据写入任务队列之后,就可以结束该第一线程,并释放第一线程所占用的系统资源,进而可以启动新的第一线程,重新给该新的第一线程分配系统资源,并通过该第一线程使用重新分配的系统资源获取其他文件数据。
任务队列可以配置在终端的内存中,内存例如只读存储器(Read OnlyMemory,ROM)、随机存储器(Random Access Memory,RAM)或者高速缓冲存储器(Cache)等。该任务队列可以是无锁队列,即第一线程写入数据时无需触发写入锁,第二线程读取数据时无需触发读取锁,可确保多个第一线程同时将数据存储到任务队列中,以实现并行写入数据。
第二线程可以在任务队列中获取一个数据,并将该数据写入数据库中。例如,在网页爬取过程中,第二线程可以在任务队列中获取网页数据,并将该网页数据存储到数据库中。又如,在多文件传输过程中,第二线程可以在任务队列中获取文件数据,并将该文件数据存储到数据库中。可选的,当存在多个数据库时,终端可以运行多个第二线程,其中第二线程和数据库对应(当然也可以一个第二线程对应多个数据库,也可以多个第二线程对应一个数据库),第二线程在任务队列中获取到数据之后,可以将该数据存储到该第二线程对应的数据库中。
其中,第一线程和第二线程可以运行在终端中,终端可以为笔记本电脑、手机、PAD(平板电脑)、车载终端、智能可穿戴设备等设备。终端中可以运行至少一种类型的互联网应用,包括但不限于:即时通信应用、SNS应用等等。用户可以通过终端使用互联网应用,例如:用户可通过终端将文件数据上传到服务器;或者,用户可通过终端使用搜索引擎进行网页爬取;等等。
其中,系统资源可以包括中央处理器(Central Processing Unit,CPU)资源、内存资源或者输入输出(Input/Output,I/O)资源等。
目前,采用多线程技术并行爬取网页数据之后,相关线程要继续执行网页内容解析和数据持久化存储的完整流程。其中的数据持久化存储环节,由于需要去除重复项、写入数据库等操作,依然耗时较长,使得线程占用的系统资源不能及时释放。基于此,本发明实施例将获取到的数据存储到一个单独的任务队列中,让每个第一线程不用关注持久化存储的环节,尽快结束自己的任务并释放系统资源,可提高系统资源利用率。主线程此时可以启动新的线程获取其他数据,第一线程从发起数据获取请求开始,到数据存储到任务队列为终止,不涉及持久化存储,其中的持久化存储相对于网页数据爬取是一个完全独立的过程,第二线程的执行时间长短,不再影响第一线程的继续执行和结束,可提高第一线程获取数据的数据获取效率。
其中,第二线程是一个持续运行的长进程任务。例如,它持续检查任务队列中有无新的数据,如果有,则取出一个数据进行持久化存储,完成之后继续查询并取出下一个数据进行持久化存储;如果任务队列为空,第二线程按需进入特定时长的休眠进程以节省系统资源,直到下一次唤醒。又如,第二线程从上一次在任务队列中获取数据开始经过预设时长之后,在任务队列中取出一个数据进行持久化存储。
基于图1所示的数据处理系统的结构示意图,请参见图2,图2是本发明实施例的一种数据处理方法的流程示意图,本发明实施例的数据处理方法可以在各种终端中执行,该终端运行有第一线程和第二线程。具体的,本发明实施例的所述方法包括如下步骤。
S201:通过第一线程获取需要存储的数据,并将数据存储到任务队列中。
终端可以通过第一线程获取需要存储的数据,并将数据存储到任务队列中。例如,终端可以通过第一线程爬取网页数据,并将该网页数据存储到任务队列中。又如,终端可以通过第一线程获取需要上传到云端的文件数据,并将该文件数据存储到任务队列中。
可选的,若终端运行有至少一个第一线程,则终端可以通过至少一个第一线程分别获取需要存储的数据,并通过各个第一线程将获取到的数据并行存储到任务队列中。例如,终端运行有三个第一线程,分别为第一线程1,第一线程2,以及第一线程3,终端可以分别通过第一线程1获取数据1,通过第二线程2获取数据2,通过第三线程3获取数据3,进而通过第一线程1将数据1存储到任务队列中,通过第一线程2将数据2存储到任务队列中,通过第一线程3将数据3存储到任务队列中。
需要说明的是,第一线程将数据存储到任务队列的过程可以是无锁写入过程,示例性的,终端可以采用腾讯云消息服务(Cloud Message Queue,CMQ)技术或者亚马逊简单队列服务(Amazon Simple Queue service,Amazon SQS)技术等。CMQ是分布式消息队列服务,能够为分布式部署的不同应用之间或者一个应用的不同组件之间,提供基于消息的可靠的异步通信机制。Amazon SQS是一种用于分布式应用的组件之间数据传递的消息队列服务。
S202:释放第一线程所占用的系统资源。
终端通过第一线程将数据存储到任务队列中之后,可以释放第一线程所占用的系统资源,以提高系统资源利用率。
S203:通过第二线程在任务队列中获取数据,并将数据存储到数据库中。
终端可以通过第二线程在任务队列中获取一个数据,并将该数据存储到数据库中。数据库可以位于服务器中,也可以位于终端中,具体不受本发明实施例的限制。
可选的,终端可以通过第二线程检测任务队列中是否存在数据,当任务队列中存在数据时,终端可以通过第二线程在任务队列中获取数据,并将该数据存储到数据库中。
可选的,终端通过第二线程检测任务队列中是否存在数据,当任务队列中不存在数据时,终端可以将第二线程的工作状态由运行状态更新为休眠状态,并获取第二线程的工作状态由运行状态更新为休眠状态的更新时间,当从更新时间开始经过第一预设时长时,将第二线程的工作状态由休眠状态更新为运行状态,并执行通过第二线程检测任务队列中是否存在数据的步骤。本发明实施例中第二线程按需进入特定时长的休眠进程,可节省系统资源。其中,第一预设时长可以为预先限定的时间段,例如1秒s或者3s等。
可选的,终端可以通过第二线程获取最近一次从任务队列中获取数据的获取时间,当从获取时间开始经过第二预设时长时,终端可以通过第二线程在任务队列中获取数据,并将数据存储到数据库中。其中,第二预设时长可以为预先限定的时间段,例如1毫秒ms或者1s等。
可选的,若数据库包括多个,则终端运行有多个第二线程,第二线程与数据库对应,终端可以通过各个第二线程在任务队列中获取数据,并将数据存储到第二线程对应的数据库中。例如存在该第二线程对应的三个数据库,分别为第一数据库、第二数据库以及第三数据库。
本发明实施例中,通过第一线程获取需要存储的数据,并将数据存储到任务队列中,进而释放第一线程所占用的系统资源,通过第二线程在任务队列中获取数据,并将数据存储到数据库中,可以提高系统资源利用率,并提升第一线程获取数据的数据获取效率。
基于图1所示的数据处理系统的结构示意图,请参见图3,图3是本发明实施例的另一种数据处理方法的流程示意图,本发明实施例的所述方法可以在各种终端中执行,所述终端运行有第一线程和第二线程。具体的,本发明实施例的所述方法包括如下步骤。
S301:终端启动第二线程。
S302:终端通过第二线程检测任务队列中是否存在数据。
S303:终端通过第二线程在任务队列中获取数据。
具体实现中,当终端通过第二线程检测任务队列中存在数据时,终端可以通过第二线程在任务队列中获取一个数据。
S304:终端通过第二线程将数据存储到数据库中。
S305:终端将第二线程的工作状态由运行状态更新为休眠状态。
具体实现中,当终端通过第二线程检测任务队列中不存在数据时,终端可以将第二线程的工作状态由运行状态更新为休眠状态。
S306:终端获取第二线程的工作状态由运行状态更新为休眠状态的更新时间。
例如,终端在2017年4月14日15:00将第二线程的工作状态由运行状态更新为休眠状态,则终端可以获取到第二线程的工作状态由运行状态更新为休眠状态的更新时间为2017年4月14日15:00。
S307:当从更新时间开始经过第一预设时长时,终端将第二线程的工作状态由休眠状态更新为运行状态。
第一预设时长可以为预先设定的时间段,例如1s或者3s等。以第一预设时长为3s为例,若更新时间为2017年4月14日15:00,则从该更新时间开始经过第一预设时长的时间为2017年4月14日15:03,即到达2017年4月14日15:03时,终端可以将第二线程的工作状态由休眠状态更新为运行状态。
本发明实施例中终端通过第二线程检测任务队列中存在数据时,可以通过第二线程在任务队列中获取数据,并将数据存储到数据库中;终端通过第二线程检测任务队列中不存在数据时,可以将第二线程的工作状态由运行状态更新为休眠状态,获取第二线程的工作状态由运行状态更新为休眠状态的更新时间,当从更新时间开始经过第一预设时长时,将第二线程的工作状态由休眠状态更新为运行状态,触发通过第二线程检测任务队列中是否存在数据,可节省系统资源。
再请参见图4,图4是本发明实施例的一种数据处理装置的结构示意图,本发明实施例的所述装置可以设置在各种终端中,终端运行有第一线程和第二线程,具体的,所述装置包括如下结构。
数据获取单元401,用于通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中。
资源释放单元402,用于释放所述第一线程所占用的系统资源,所述系统资源包括CPU资源、内存资源或者I/O资源。
数据存储单元403,用于通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中。
可选的,所述终端运行有至少一个第一线程,则所述数据获取单元401,具体用于:
通过所述至少一个第一线程分别获取需要存储的数据。
通过各个所述第一线程将获取到的数据并行存储到所述任务队列中。
可选的,所述数据处理装置还可以包括:
检测单元404,用于所述数据存储单元403通过所述第二线程在所述任务队列中获取所述数据之前,通过所述第二线程检测所述任务队列中是否存在数据。
所述数据存储单元403,还用于当所述任务队列中存在数据时,通过所述第二线程在所述任务队列中获取所述数据。
可选的,所述数据处理装置还可以包括:
状态更新单元405,用于在所述检测单元404通过所述第二线程检测到所述任务队列中不存在数据时,将所述第二线程的工作状态由运行状态更新为休眠状态。
时间获取单元406,用于获取所述第二线程的工作状态由运行状态更新为休眠状态的更新时间。
所述状态更新单元405,还用于当从所述更新时间开始经过第一预设时长时,将所述第二线程的工作状态由休眠状态更新为运行状态,以触发所述检测单元404通过所述第二线程检测所述任务队列中是否存在数据。
可选的,所述数据处理装置还可以包括:
时间获取单元406,用于所述数据存储单元403通过所述第二线程在所述任务队列中获取所述数据之前,通过所述第二线程获取最近一次从所述任务队列中获取数据的获取时间。
所述数据存储单元403,还用于当从所述获取时间开始经过第二预设时长时,通过所述第二线程在所述任务队列中获取所述数据。
可选的,所述数据库可以包括多个,则所述终端运行有多个第二线程,所述第二线程与所述数据库对应,可以一个数据库对应一个第二线程,也可以多个数据库对应一个第二线程,也可以一个数据对应多个第二线程。
进一步的,所述数据存储单元403,具体用于通过各个所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到所述第二线程对应的数据库中。
本发明实施例所述装置的各个单元的具体实现可参考上述方法项实施例中,相关步骤的具体实现。
本发明实施例中,数据获取单元401通过第一线程获取需要存储的数据,并将数据存储到任务队列中,资源释放单元402释放第一线程所占用的系统资源,数据存储单元403通过第二线程在任务队列中获取数据,并将数据存储到数据库中,可以提高系统资源利用率,并提升第一线程获取数据的数据获取效率。
再请参见图5,是本发明实施例提供了一种终端的结构示意图,该终端的内部结构可包括但不限于:处理器501、网络接口502及存储器503。存储器503包括第一线程5031、任务队列5032以及第二线程5033。其中,终端内的处理器501、网络接口502及存储器503可通过总线504或其他方式连接,在本发明实施例所示图5中以通过总线504连接为例。
其中,处理器501(或称CPU)是终端的计算核心以及控制核心,其可以处理终端的各类数据,例如:CPU可以控制第一线程获取需要存储的数据,并将所述数据存储到任务队列中;再如:CPU可以释放第一线程所占用的系统资源;再如CPU可以通过第二线程在任务队列中获取数据,并将数据存储到数据库中等等。存储器503(Memory)是终端中的记忆设备,用于存放程序和数据。可以理解的是,此处的存储器504既可以包括终端的内置存储器,当然也可以包括终端所支持的扩展存储器。存储器503提供存储空间,该存储空间存储了终端的操作系统。本发明实施例中,存储器503的存储空间还存储了第一线程、第二线程以及任务队列。终端的处理器501通过运行存储器503中的关于数据处理的应用程序来执行上述图2-3所示方法流程的相应步骤。
具体的,所述处理器501,调用存储器504中存储的关于数据处理的应用程序,用于通过第一线程获取需要存储的数据,并将数据存储到任务队列中;释放第一线程所占用的系统资源,系统资源包括CPU资源、内存资源或者I/O资源;通过第二线程在任务队列中获取数据,并将数据存储到数据库中。
进一步可选地,所述终端运行有至少一个第一线程,则处理器501通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中,具体可以为:通过所述至少一个第一线程分别获取需要存储的数据;通过各个所述第一线程将获取到的数据并行存储到所述任务队列中。
进一步可选地,所述处理器501通过所述第二线程在所述任务队列中获取所述数据之前,还可以执行以下操作:通过所述第二线程检测所述任务队列中是否存在数据;当所述任务队列中存在数据时,通过所述第二线程在所述任务队列中获取所述数据。
进一步可选地,所述处理器501通过所述第二线程检测所述任务队列中是否存在数据之后,还可以执行以下操作:当所述任务队列中不存在数据时,将所述第二线程的工作状态由运行状态更新为休眠状态;获取所述第二线程的工作状态由运行状态更新为休眠状态的更新时间;当从所述更新时间开始经过第一预设时长时,将所述第二线程的工作状态由休眠状态更新为运行状态,并执行通过所述第二线程检测所述任务队列中是否存在数据的步骤。
进一步可选地,所述处理器501通过所述第二线程在所述任务队列中获取所述数据之前,还可以执行以下操作:通过所述第二线程获取最近一次从所述任务队列中获取数据的获取时间;当从所述获取时间开始经过第二预设时长时,通过所述第二线程在所述任务队列中获取所述数据。
进一步可选地,所述数据库包括多个,则所述终端运行有多个第二线程,第二线程与所述数据库对应,所述处理器501通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中,具体可以为:通过各个所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到第二线程对应的数据库中。
本发明实施例的所述处理器501的具体实现可参考上述方法项实施例中相关步骤的具体描述。
本发明实施例可以通过第一线程获取需要存储的数据,并将数据存储到任务队列中,释放第一线程所占用的系统资源,通过第二线程在任务队列中获取数据,并将数据存储到数据库中,提高系统资源利用率,并提升第一线程获取数据的数据获取效率。
本领域普通技术人员可以理解实现上述实施例方法中的全部或部分流程,是可以通过计算机程序来指令相关的硬件来完成,所述的程序可存储于一计算机可读取存储介质中,该程序在执行时,可包括如上述各方法的实施例的流程。其中,所述的存储介质可为磁碟、光盘、只读存储记忆体(Read-Only Memory,ROM)或随机存储记忆体(Random AccessMemory,RAM)等。
以上所揭露的仅为本发明一种部分实施例而已,当然不能以此来限定本发明之权利范围,本领域普通技术人员可以理解实现上述实施例的全部或部分流程,并依本发明权利要求所作的等同变化,仍属于发明所涵盖的范围。
Claims (9)
1.一种数据处理方法,其特征在于,所述方法应用于终端,所述终端运行有第一线程和第二线程,所述第一线程为网页爬虫线程,所述第二线程用于存储网页爬虫线程爬取的数据,所述第一线程爬取网页数据与所述第二线程存储爬取的数据是两个完全独立的过程,所述方法包括:
所述终端通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中;
所述终端释放所述第一线程所占用的系统资源;
所述终端通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中,其中,所述第二线程是在从获取的所述第二线程的工作状态由运行状态更新为休眠状态的更新时间开始经过第一预设时长时,由休眠状态更新为运行状态,或者,所述第二线程是在从所述第二线程最近一次从所述任务队列中获取数据的获取时间开始经过第二预设时长时,在所述任务队列中获取数据;
当所述任务队列中不存在数据时,所述终端将所述第二线程的工作状态由运行状态更新为休眠状态;
其中,所述任务队列为无锁队列,所述第一线程向所述任务队列写入数据时为无锁写入过程,所述第二线程从所述任务队列获取数据时为无锁获取过程。
2.如权利要求1所述的方法,其特征在于,所述终端运行有至少两个第一线程;
所述通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中,包括:
通过所述至少两个第一线程分别获取需要存储的数据;
通过各个所述第一线程将获取到的数据并行存储到所述任务队列中。
3.如权利要求1所述的方法,其特征在于,所述通过所述第二线程在所述任务队列中获取所述数据之前,还包括:
通过所述第二线程检测所述任务队列中是否存在数据;
当所述任务队列中存在数据时,通过所述第二线程在所述任务队列中获取所述数据。
4.如权利要求1所述的方法,其特征在于,所述数据库包括多个,则所述终端运行有多个第二线程,每一个第二线程与一个或者多个数据库对应;
所述通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中,包括:
通过各个所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到第二线程对应的数据库中。
5.一种数据处理装置,其特征在于,所述装置应用于终端,所述终端运行有第一线程和第二线程,所述第一线程为网页爬虫线程,所述第二线程用于存储网页爬虫线程爬取的数据,所述第一线程爬取网页数据与所述第二线程存储爬取的数据是两个完全独立的过程,所述装置包括:
数据获取单元,用于通过所述第一线程获取需要存储的数据,并将所述数据存储到任务队列中;
资源释放单元,用于释放所述第一线程所占用的系统资源;
数据存储单元,用于通过所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到数据库中;
状态更新单元,用于在所述任务队列中不存在数据时,将所述第二线程的工作状态由运行状态更新为休眠状态;
其中,所述任务队列为无锁队列,所述第一线程向所述任务队列写入数据时为无锁写入过程,所述第二线程从所述任务队列获取数据时为无锁获取过程;
其中,所述装置还包括:时间获取单元,用于获取所述第二线程的工作状态由运行状态更新为休眠状态的更新时间;所述状态更新单元,还用于当从所述更新时间开始经过第一预设时长时,将所述第二线程的工作状态由休眠状态更新为运行状态;
或者,所述装置还包括:时间获取单元,用于得到通过所述第二线程最近一次从所述任务队列中获取数据的获取时间;所述数据存储单元,还用于当从所述获取时间开始经过第二预设时长时,通过所述第二线程在所述任务队列中获取所述数据。
6.如权利要求5所述的装置,其特征在于,所述终端运行有至少两个第一线程;
所述数据获取单元,具体用于:
通过所述至少两个第一线程分别获取需要存储的数据;
通过各个所述第一线程将获取到的数据并行存储到所述任务队列中。
7.如权利要求5所述的装置,其特征在于,所述装置还包括:
检测单元,用于在所述数据存储单元通过所述第二线程在所述任务队列中获取所述数据之前,通过所述第二线程检测所述任务队列中是否存在数据;
所述数据存储单元,用于当所述任务队列中存在数据时,通过所述第二线程在所述任务队列中获取所述数据。
8.如权利要求5所述的装置,其特征在于,所述数据库包括多个,则所述终端运行有多个第二线程,每一个第二线程与一个或者多个数据库对应;
所述数据存储单元,具体用于通过各个所述第二线程在所述任务队列中获取所述数据,并将所述数据存储到第二线程对应的数据库中。
9.一种终端,其特征在于,所述终端包括如权利要求5-8任一项所述的数据处理装置。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710365867.0A CN107256180B (zh) | 2017-05-19 | 2017-05-19 | 数据处理方法、装置及终端 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN201710365867.0A CN107256180B (zh) | 2017-05-19 | 2017-05-19 | 数据处理方法、装置及终端 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN107256180A CN107256180A (zh) | 2017-10-17 |
CN107256180B true CN107256180B (zh) | 2019-04-26 |
Family
ID=60027655
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN201710365867.0A Active CN107256180B (zh) | 2017-05-19 | 2017-05-19 | 数据处理方法、装置及终端 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN107256180B (zh) |
Families Citing this family (9)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN107977275B (zh) * | 2017-12-05 | 2022-10-21 | 腾讯科技(深圳)有限公司 | 基于消息队列的任务处理方法及相关设备 |
CN108509248B (zh) * | 2018-04-13 | 2021-11-23 | 网易(杭州)网络有限公司 | 数据处理方法和装置、存储介质、处理器及终端 |
CN109857547A (zh) * | 2019-01-04 | 2019-06-07 | 平安科技(深圳)有限公司 | 一种线程分配方法、装置及终端设备 |
CN116541451A (zh) * | 2019-02-02 | 2023-08-04 | 创新先进技术有限公司 | 一种数据导出方法及装置 |
CN109862034B (zh) * | 2019-03-18 | 2021-08-24 | 中车青岛四方车辆研究所有限公司 | 数据传输处理系统、网关和数据传输处理方法 |
CN110221924A (zh) * | 2019-04-29 | 2019-09-10 | 北京云迹科技有限公司 | 数据处理的方法及装置 |
CN111290845A (zh) * | 2020-01-15 | 2020-06-16 | 深圳市元征科技股份有限公司 | 数据传输方法、装置、设备和存储介质 |
CN111338787B (zh) * | 2020-02-04 | 2023-09-01 | 浙江大华技术股份有限公司 | 一种数据处理方法及装置、存储介质、电子装置 |
CN113609226B (zh) * | 2021-08-09 | 2024-05-14 | 深圳平安智慧医健科技有限公司 | 一种数据导出方法、装置、计算机设备及存储介质 |
Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6430591B1 (en) * | 1997-05-30 | 2002-08-06 | Microsoft Corporation | System and method for rendering electronic images |
CN102411631A (zh) * | 2011-12-22 | 2012-04-11 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法 |
CN102630316A (zh) * | 2011-12-22 | 2012-08-08 | 华为技术有限公司 | 并发任务的处理方法及装置 |
CN106325989A (zh) * | 2016-08-17 | 2017-01-11 | 东软集团股份有限公司 | 任务执行方法及装置 |
Family Cites Families (12)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN1266590C (zh) * | 2002-12-31 | 2006-07-26 | 上海科泰世纪科技有限公司 | 面向构件基于系统内核的进程池/线程池管理方法 |
CN101083532A (zh) * | 2006-05-31 | 2007-12-05 | 华为技术有限公司 | 一种数据加载的实现方法及系统 |
CN101355577B (zh) * | 2008-09-01 | 2011-04-20 | 中兴通讯股份有限公司 | 一种多线程通讯程序中防止线程吊死的方法 |
US8464269B2 (en) * | 2010-12-16 | 2013-06-11 | International Business Machines Corporation | Handling and reporting of object state transitions on a multiprocess architecture |
US9116744B2 (en) * | 2012-09-07 | 2015-08-25 | International Business Machines Corporation | Resource management within a process via iterative negotiation |
CN103164347A (zh) * | 2013-02-18 | 2013-06-19 | 中国农业银行股份有限公司 | 数据缓存的方法和装置 |
CN103488690B (zh) * | 2013-09-02 | 2017-06-30 | 用友网络科技股份有限公司 | 数据集成系统和数据集成方法 |
CN103761157A (zh) * | 2014-01-21 | 2014-04-30 | 国家电网公司 | 一种基于多任务巡检策略实现系统容错机制的方法 |
CN105373420B (zh) * | 2014-08-28 | 2019-12-06 | 北京奇虎科技有限公司 | 数据传输方法及装置 |
CN104376063B (zh) * | 2014-11-11 | 2019-02-19 | 南京邮电大学 | 基于分类管理的多线程网络爬虫方法和信息实时更新系统 |
CN106293888A (zh) * | 2015-06-04 | 2017-01-04 | 北京国双科技有限公司 | 数据的抓包、存盘方法及数据的抓包、存盘装置 |
CN106325991B (zh) * | 2016-08-19 | 2020-04-03 | 东软集团股份有限公司 | 流程引擎的指令调度方法及装置 |
-
2017
- 2017-05-19 CN CN201710365867.0A patent/CN107256180B/zh active Active
Patent Citations (4)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US6430591B1 (en) * | 1997-05-30 | 2002-08-06 | Microsoft Corporation | System and method for rendering electronic images |
CN102411631A (zh) * | 2011-12-22 | 2012-04-11 | 中国科学院声学研究所 | 一种嵌入式浏览器磁盘缓存的方法 |
CN102630316A (zh) * | 2011-12-22 | 2012-08-08 | 华为技术有限公司 | 并发任务的处理方法及装置 |
CN106325989A (zh) * | 2016-08-17 | 2017-01-11 | 东软集团股份有限公司 | 任务执行方法及装置 |
Also Published As
Publication number | Publication date |
---|---|
CN107256180A (zh) | 2017-10-17 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN107256180B (zh) | 数据处理方法、装置及终端 | |
US10666758B2 (en) | Browser resource pre-pulling method, terminal and storage medium | |
US8954971B2 (en) | Data collecting method, data collecting apparatus and network management device | |
CN104205109B (zh) | 持续性和弹性的工作者进程 | |
CN109960582A (zh) | 在tee侧实现多核并行的方法、装置及系统 | |
US9515901B2 (en) | Automatic asynchronous handoff identification | |
CN108834086A (zh) | 短信发送的方法、装置、计算机设备和存储介质 | |
CN110532067A (zh) | 事件处理方法、装置、设备及存储介质 | |
WO2014206289A1 (en) | Method and apparatus for outputting log information | |
CN102521712A (zh) | 一种流程实例数据处理方法和装置 | |
CN109309712A (zh) | 基于接口异步调用的数据传输方法、服务器及存储介质 | |
CN108038009B (zh) | 基于Web应用的前后端交互方法、装置及计算机设备 | |
CN110020046A (zh) | 一种数据抓取方法及装置 | |
CN112631800A (zh) | 面向kafka的数据传输方法、系统、计算机设备及存储介质 | |
CN112905314A (zh) | 异步处理方法、装置、电子设备、存储介质、及路侧设备 | |
CN106681830B (zh) | 一种任务缓存空间监测方法和装置 | |
CN104714839A (zh) | 一种控制进程生命期的方法和装置 | |
CN110213157A (zh) | 一种即时通信请求的监控方法、装置及系统 | |
CN110532045A (zh) | 一种跨进程调用方法及相关装置 | |
CN105630556B (zh) | 一种加载资源的方法和系统 | |
CN105162837B (zh) | 海量数据存储环境下提升i/o吞吐率的方法及系统 | |
CN113535371A (zh) | 一种多线程异步加载资源的方法和装置 | |
CN116932147A (zh) | 流式作业处理方法、装置、电子设备及介质 | |
CN116095005A (zh) | 流量管理方法、装置、设备、介质和程序产品 | |
CN106980463A (zh) | 存储系统的服务质量控制方法和装置 |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |