一种残膜回收机防缠绕挑膜装置的制 一种秧草收获机用电力驱动行走机构

一种数据处理方法、装置、及电子设备与流程

2022-07-02 14:33:27 来源:中国专利 TAG:


1.本发明涉及数据传输技术领域,特别是涉及一种数据处理方法、装置、及电子设备。


背景技术:

2.在客户端与服务器之间的数据传输过程中,需要经过数据传输系统对待传输的数据进行处理操作。具体而言,数据传输系统可以分配线程来接收数据提供方发送的数据,例如客户端发送的数据,并将该数据处理成数据需求方所需要的格式,再将处理后的数据发送到数据需求方,例如服务器。
3.然而,相关技术中,数据从接收、处理到发送都是由同一个线程来操作。在该线程处理数据的过程中可能会发生等待,例如,调用外部接口处理数据时,这就导致该线程发生阻塞。在阻塞过程中,该线程会一直处于等待状态,无法得到有效利用,从而导致整个数据传输系统的工作效率低下。可见,如何提高数据传输系统的工作效率,是亟待解决的问题。


技术实现要素:

4.本发明实施例的目的在于提供一种数据处理方法、装置、及电子设备,用以提高数据传输系统的工作效率。具体技术方案如下:
5.第一方面,本发明实施例提供了一种数据处理方法,该方法包括:
6.确定待处理数据;其中,所述待处理数据为数据提供方发送的一目标数据;
7.为目标处理线程分配针对所述待处理数据的处理任务;
8.在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
9.在所述处理任务结束后,将处理结果发送至数据需求方。
10.可选地,所述方法还包括:
11.在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;
12.所述确定待处理数据,包括:
13.若检测到所述待处理队列中存在待处理的目标数据时,确定所述待处理队列中的一目标数据,作为待处理数据。
14.可选地,所述目标处理线程在执行所述处理任务的过程中发起功能调用的方式,包括:
15.所述数据处理线程调用所述外部装置的接口,使得所述外部装置读取该处理线程正在处理的数据,并执行针对该数据的数据处理任务的外部处理。
16.可选地,所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容,包括:
17.在监听到所述外部装置完成针对所述处理任务的外部处理的情况下,再次选取一个空闲的处理线程执行该处理任务未完成的任务内容。
18.可选地,所述在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列,包括:
19.指定接收线程在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;其中,所述指定接收线程为第一线程池中的一空闲的线程。
20.可选地,所述将处理结果发送至数据需求方之前,所述方法还包括:
21.将所述待处理数据对应的处理结果放入指定发送队列;
22.所述将处理结果发送至数据需求方,包括:
23.在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定发送线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定发送线程为第二线程池中的空闲的线程。
24.可选地,所述处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容。
25.第二方面,基于上述数据处理方法,本发明实施例提供了一种数据处理装置,该装置包括:
26.确定模块,用于确定待处理数据;其中,所述待处理数据为数据提供方发送的一目标数据;
27.分配模块,用于为目标处理线程分配针对所述待处理数据的处理任务;
28.调用模块,用于在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
29.发送模块,用于在所述处理任务结束后,将处理结果发送至数据需求方。
30.可选地,所述装置还包括:
31.存储模块,用于在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;
32.所述确定模块,具体用于:
33.若检测到所述待处理队列中存在待处理的目标数据时,确定所述待处理队列中的一目标数据,作为待处理数据。
34.可选地,所述目标处理线程在执行所述处理任务的过程中发起功能调用的方式,包括:
35.所述数据处理线程调用所述外部装置的接口,使得所述外部装置读取该处理线程正在处理的数据,并执行针对该数据的数据处理任务的外部处理。
36.可选地,所述调用模块,在功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容,包括:
37.在监听到所述外部装置完成针对所述处理任务的外部处理的情况下,再次选取一个空闲的处理线程执行该处理任务未完成的任务内容。
38.可选地,所述存储模块通过指定接收线程实现;所述指定接收线程在接收到数据
提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;其中,所述指定发送线程为第一线程池中的一空闲的线程。
39.可选地,所述装置还包括:
40.放入模块,用于所述发送模块将处理结果发送至数据需求方之前,将所述待处理数据对应的处理结果放入指定发送队列;
41.所述发送模块,具体用于:
42.在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定发送线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定发送线程为第二线程池中的空闲的线程。
43.可选地,所述处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容。
44.第三方面,本发明实施例提供了一种电子设备,包括处理器、通信接口、存储器和通信总线,其中,处理器,通信接口,存储器通过通信总线完成相互间的通信;
45.存储器,用于存放计算机程序;
46.处理器,用于执行存储器上所存放的程序时,实现上述数据处理方法的步骤。
47.第四方面,本发明实施例提供了一种计算机可读存储介质,所述计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述数据处理方法的步骤。
48.本发明实施例还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述数据处理方法的步骤。
49.本发明实施例有益效果:
50.本发明实施例提供的数据处理方法,先确定待处理数据;为目标处理线程分配针对所述待处理数据的处理任务;在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;在所述处理任务结束后,将处理结果发送至数据需求方。可见,本方案中,在目标处理线程执行处理任务的过程中发起功能调用的情况下,对该目标处理线程执行释放操作,这样,该目标处理线程可以继续处理其他任务,不必等待功能调用结束。因此,通过本方案,可以提高数据传输系统的工作效率。
51.当然,实施本发明的任一产品或方法并不一定需要同时达到以上所述的所有优点。
附图说明
52.为了更清楚地说明本发明实施例或现有技术中的技术方案,下面将对实施例或现有技术描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图仅仅是本发明的一些实施例,对于本领域普通技术人员来讲,还可以根据这些附图获得其他的实施例。
53.图1为本发明实施例中数据处理方法的流程图;
54.图2为本发明实施例中数据处理方法的另一流程图;
55.图3为本发明实施例中数据处理方法的又一流程图;
56.图4为本发明实施例中数据处理方法的又一流程图;
57.图5为本发明实施例中数据传输系统的结构示意图;
58.图6为本发明实施例中数据处理装置的结构示意图;
59.图7为本发明实施例所提供的电子设备的结构示意图。
具体实施方式
60.下面将结合本发明实施例中的附图,对本发明实施例中的技术方案进行清楚、完整地描述,显然,所描述的实施例仅仅是本发明一部分实施例,而不是全部的实施例。基于本发明中的实施例,本领域普通技术人员基于本技术所获得的所有其他实施例,都属于本发明保护的范围。
61.目前,客户端与服务器之间可以通过websocket(一种在单个tcp连接上进行全双工通信的协议)创建持久性的连接,并进行双向数据传输。在客户端与服务器之间的数据传输过程中,需要经过数据传输系统对待传输的数据进行处理操作,也就是将从数据提供方,发送的数据处理成服务器所需的格式,再将数据发送至数据需求方,例如,服务器需要收集客户端的音频数据对应的文字数据时,则可以由数据传输系统接收该音频数据,并对音频数据进行文字转换、编码处理,得到处理后的文字数据,再将文字数据发送至服务器。
62.相关技术中,按照阻塞式编程的思想,数据从接收到数据提供方发送的信息开始,到数据处理,至发送给数据需求方,都是由同一个线程来操作。在该线程执行数据的处理任务的过程中可能会发生等待,例如,调用外部装置处理数据时,该线程会一直处于等待状态,直至外部装置处理完成,该线程才会继续执行该处理任务未完成的任务内容。在线程处于等待状态的情况下,线程的计算资源是无法得到利用的,假设数据在线程中的处理时间都为3秒,其中的2秒为调用一个外部装置并等待所消耗时间,那么n个线程3秒钟最多只能处理n个数据。但其中调用外部装置的2秒钟,线程一直处于等待状态,无法得到充分利用。可见,相关技术中,阻塞式编程的思想会导致整个数据传输系统的工作效率低下。
63.而异步非阻塞编程的思想,即,在发出io(input/output,输入输出)操作时,无需一直等到io操作完成,只执行一个触发io操作后继续执行其他操作,可以用于解决执行io操作时发生阻塞的问题,却无法解决对数据加工处理时发生阻塞。
64.为了解决上述问题,提高数据传输系统的工作效率,本发明实施例提供了一种数据处理方法、装置及电子设备。
65.下面首先对本发明实施例所提供的数据处理方法进行介绍。本发明实施例提供的数据处理方法可以应用于数据传输系统,该数据传输系统与数据提供方及数据需求方相通信。
66.示例性的,数据传输系统可以部署于数据需求方,或者,与数据需求方相通信的指定节点或指定集群中,当然并不局限于此。仍以客户端与服务器进行数据传输的场景为例,假设客户端为数据提供方,服务器为数据需求方,此时,在一种实现方式中,数据传输系统可以部署于服务器,那么,服务器中的数据传输系统在接收到数据提供方发送的数据后,可以对数据进行相应的处理,然后将处理后的数据结果发送给服务器中的其他功能程序或功能模块;在另一种实现方式中,数据传输系统可以部署于与服务器相通信的指定节点或指定集群中,数据提供方发送的数据先由指定节点或指定集群中的数据传输系统进行相应处
理后,然后,再传输给服务器。
67.其中,本发明实施例所提供的数据处理方法可以包括以下步骤:
68.确定待处理数据;其中,所述待处理数据为数据提供方发送的待处理的一目标数据;
69.为目标处理线程分配针对所述待处理数据的处理任务;
70.在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征了利用外部装置处理所述待处理数据;
71.在所述处理任务结束后,将处理结果发送至数据需求方。
72.本发明实施例提供的数据处理方法,先确定待处理数据;再为目标处理线程分配针对所述待处理数据的处理任务;在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;在所述处理任务结束后,将处理结果发送至数据需求方。可见,本方案中,在目标处理线程执行处理任务的过程中发起功能调用的情况下,对该目标处理线程执行释放操作,这样,该目标处理线程可以继续处理其他任务,不必等待功能调用结束。因此,通过本方案,可以提高数据传输系统的工作效率。
73.下面结合附图对本发明实施例所提供的数据处理方法进行介绍。
74.如图1所示,本发明实施例所提供的数据处理方法可以包括以下步骤:
75.s101,确定待处理数据;其中,所述待处理数据为数据提供方发送的一目标数据;
76.其中,数据提供方可以为任何可以发送数据的设备,例如,终端设备中的客户端,部署有数据库的服务器等等;目标数据为待处理的数据。在需要从数据提供方获取数据的情况下,可能需要对获取的数据进行一定的数据处理,在经过数据处理后所得到的结果,可以传递给数据需求方。例如,服务器需要从客户端获取音频数据,并以文字数据的形式记录在服务器的数据库中,此时可以通过数据传输系统在将音频数据发送至服务器前,将音频数据转换成文字,生成对应的文字数据,再将文字数据发送至服务器,此时,待处理的音频数据即为待处理数据。
77.可以理解的是,目标数据的具体形态与实际场景相关。仍以上述的服务器从客户端获取音频数据的示例进行说明,此时,目标数据可以为客户端发送的一音频数据。
78.s102,为目标处理线程分配针对所述待处理数据的处理任务;
79.其中,线程是操作系统能够进行运算调度的最小单位,在数据传输系统中,线程可以用于对数据进行接收、执行处理任务、发送等操作。本发明实施例中的处理线程即,用于对数据执行处理任务的线程。
80.在数据传输系统中存在多个处理线程,多个处理线程可以看作一个处理线程池,在需要使用处理线程的情况下,则可以从处理线程池中选取空闲的目标处理线程。
81.在确定待处理数据的情况下,可以选取空闲的目标处理线程,用于处理待处理数据的处理任务。其中,处理任务可以包括对数据进行编译、数据信息转换等任务内容,当然并不局限于此。
82.此外,可以理解的是,待处理数据可以为多个,每一待处理数据的处理任务都要占用一个处理线程。在所有处理线程均被占用的情况下,新确定的待处理数据的处理任务需
要等待被占用的处理线程执行完成当前的处理任务,才可以被执行。
83.s103,在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征了利用外部装置处理所述待处理数据;
84.即,在目标处理线程执行处理任务的过程中,可以调用外部装置来协助处理数据,其中,外部装置可以为虚拟装置,例如,预先编写好的数据处理程序,数据处理工具等。在发起功能调用时,可以将该目标处理线程释放,释放后的目标处理线程可以继续处理其他处理任务,而不用等待功能调用结束;而在外部装置处理数据完成,即功能调用结束,再选取一个当前空闲的处理线程以执行该处理任务未完成的任务内容,从而充分利用数据传输系统中的计算资源。
85.示例性的,在一种实现方式中,所述目标处理线程在执行所述处理任务的过程中发起功能调用的方式,包括:
86.所述数据处理线程调用所述外部装置的接口,使得所述外部装置读取该处理线程正在处理的数据,并执行针对该数据的数据处理任务的外部处理。
87.其中,外部装置的接口可以为一个api(application programming interface,应用程序接口)接口,当然并不局限于此。
88.另外,在一种实现方式中,所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容,可以包括:
89.在监听到所述外部装置完成针对所述处理任务的外部处理的情况下,再次选取一个空闲的处理线程执行该处理任务未完成的任务内容。
90.并且,在一种实现方式中,外部装置完成针对所述处理任务的外部处理后,可以调用数据传输系统的回调接口来通知数据传输系统外部处理完成,或者由数据传输系统不断询问外部装置是否处理完成,以实现对外部装置的监听。
91.在调用外部装置的接口之后就直接释放该处理线程,在外部装置处理完数据的情况下,数据传输系统再次分配处理线程去处理该处理任务未完成的内容。例如,一处理任务共需要处理时间为3秒,其中,外部装置处理需要2秒钟,这样,该处理任务占用处理线程的时间仅为1秒,可见,通过本方案,一个处理任务对线程的占用时间大大减少,从而提高了数据传输系统的整体效率。
92.s104,在所述处理任务结束后,将处理结果发送至数据需求方。
93.其中,处理结果即待处理数据经过数据处理后所得到的处理结果;数据需求方可以为任意接收数据的设备,例如,服务器等。在一种实现方式中,数据传输系统部署于服务器,那么,服务器中的数据传输系统在对待处理数据进行相应的处理后,将处理后的处理结果发送给服务器中的其他功能程序或功能模块;在另一种实现方式中,数据传输系统部署于与服务器相通信的指定节点或指定集群中,数据传输系统对待处理数据进行相应处理后,再将处理结果传输给服务器。
94.本发明实施例提供的数据处理方法,先确定待处理数据;再为所述目标处理线程分配针对所述待处理数据的处理任务;在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空
闲的处理线程以执行所述处理任务未完成的任务内容;在所述处理任务结束后,将处理结果发送至数据需求方。可见,本方案中,在目标处理线程执行处理任务的过程中发起功能调用的情况下,对该目标处理线程执行释放操作,这样,该目标处理线程可以继续处理其他任务,不必等待功能调用结束。因此,通过本方案,可以提高数据传输系统的工作效率。
95.考虑到所有线程均被占用的情况,同时保证有序确定待处理数据,在本发明的另一实施例中,如图2所示,该数据处理方法可以包括:
96.s200,在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;
97.s201,若检测到所述待处理队列中存在待处理的目标数据时,确定所述待处理队列中的一目标数据,作为待处理数据;
98.本实施例中,s202为上述实施例中的s101的一种具体实现方式。
99.其中,待处理队列的存储位置可以为数据传输系统的缓存区所划分出的指定位置。将接收到的数据先存入待处理队列中,这样,在待处理队列中存在待处理的目标数据的情况下,就确定待处理队列中的一目标数据,作为待处理数据,具体地,在一种实现方式中,可以按照先进先出的原则,即优先将先存入待处理队列中的目标数据确定为待处理数据。
100.另外,也可以利用数据传输系统中的线程将所接收的目标数据存入待处理队列,此时,所述在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列,包括:
101.指定接收线程在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;其中,所述指定发送线程为第一线程池中的一空闲的线程。
102.第一线程池中可以包含多个发送线程,在接收到数据提供方发送的目标数据的情况下,就分配一个空闲的指定发送线程,将接收到的目标数据存入待处理队列中。
103.在所有处理线程均被占用的情况下,可以等待任一被占用的处理线程执行完成当前的处理任务,将该处理线程确定为目标处理线程,同时从待处理队列中确定待处理数据,并为该目标处理线程分配针对该待处理数据的处理任务。
104.s202,为目标处理线程分配针对所述待处理数据的处理任务;
105.s203,在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
106.s204,在所述处理任务结束后,将处理结果发送至数据需求方。
107.本实施例中,s202-s204与上述实施例的s102-s104相同,在此不做赘述。
108.本实施例中,在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列,若检测到所述待处理队列中存在待处理的目标数据时,确定待处理队列中的一目标数据,作为待处理数据。可见,通过本方案可以提高数据传输系统的工作效率,进一步地,通过将所接收的待处理数据存入待处理队列中,为待处理数据提供缓存区,防止发生消息堵塞。
109.同样地,为了有序发送待处理数据对应的处理结果至数据需求方,在本发明的另一实施例中,所述将处理结果发送至数据需求方之前,所述方法还包括:
110.将所述待处理数据对应的处理结果放入指定发送队列;
111.所述将处理结果发送至数据需求方,包括:
112.在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定接收线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定接收线程为第二线程池中的空闲的线程。
113.本实施例中,如图3所示,完整的方法流程可以包括以下步骤:
114.s301,确定待处理数据;其中,所述待处理数据为数据提供方发送的待处理的一目标数据;
115.s302,为目标处理线程分配针对所述待处理数据的处理任务;
116.s303,在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
117.本实施例中,s301-s303与上述实施例的s101-s103相同,在此不做赘述。
118.s304,将所述待处理数据对应的处理结果放入指定发送队列;
119.s305,在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定接收线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定接收线程为第二线程池中的空闲的线程。
120.其中,发送任务,即,将待处理数据对应的处理结果从指定发送队列发送至数据需求方的任务。第二线程池中可以包含多个发送线程,用于将指定发送队列中的待发送数据发送至数据需求方,在检测到指定发送队列中存在待发送的待处理数据对应的处理结果的情况下,就分配一个空闲的指定发送线程,将处理结果发送至数据需求方。
121.此外,为了充分利用线程池的资源,上述第一线程池和第二线程池也可以为同一个线程池,线程池中的线程用于对数据的接收和发送。
122.本实施例中,将处理结果发送至数据需求方之前,将待处理数据对应的处理结果放入指定发送队列;在检测到待处理数据对应的处理结果为指定发送队列中的待发送数据的情况下,为指定发送线程分配针对待处理数据对应的处理结果的发送任务。可见,通过本方案可以提高数据传输系统的工作效率,进一步地,通过将待处理数据对应的处理结果存入指定发送队列中,为待处理结果提供缓存区,并通过指定发送线程不断发送指定发送队列中的处理结果,可以防止发生消息堵塞。
123.针对各个待处理数据而言,所需处理逻辑相同的待处理数据可以作为同一类数据,所需处理逻辑不同的待处理数据可以作为不同类别的数据。那么,由于不同类别的待处理数据所对应的处理逻辑不同,因此,不同类别的待处理数据所对应的处理任务也不同,也就是,不同类别的待处理数据可以对应不同的处理逻辑。例如,a组待处理数据用处理逻辑x来处理,则a组待处理数据对应于处理任务1,b组待处理数据用处理逻辑y来处理,则b组待处理数据可以对应处理任务2。
124.可以理解的是,可以预先设定有多种处理逻辑,任一待处理数据采用何种处理逻辑的确定方式可以存在多种。示例性的,待处理数据采用何种处理逻辑,可以根据待处理数据的数据提供方来确定,例如:若待处理数据的数据提供方为业务系统a,则待处理数据对
应的处理逻辑为格式转换操作,若待处理数据的数据提供方为业务系统b,则待处理数据对应的处理逻辑为格式转换操作以及加密操作;或者,待处理数据采用何种处理逻辑,可以根据待处理数据的数据类型确定,例如:若待处理数据的数据类型为类型1,则待处理数据对应的处理逻辑为格式转换操作,若待处理数据的数据类型为类型2,则待处理数据对应的处理逻辑为格式转换操作以及加密操作。
125.由于不同的处理逻辑之间往往存在交集,相关技术中,把交集的逻辑作为一个共用逻辑来管理,但显然不同逻辑之间的耦合性还是太高,想要删除一个逻辑容易牵一发而动全身。且在分组变多的情况下,提出的共用逻辑会变得难以管理。因此,在本发明的另一实施例中,所述处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容。
126.在本发明中,针对任一处理任务,可以将该处理任务的处理逻辑细分为多个处理步骤,每一处理步骤可以视作该处理任务的一个子任务,针对每一处理步骤(即子任务)的任务内容可以都采用装饰器进行装饰。其中,装饰器本质上是一个函数,可以称作装饰函数,可以在不改变原对象的基础上,通过对原对象进行包装扩展,使原对象可以满足更复杂需求,同时不破坏现有的处理逻辑,本发明中的处理任务可以作为原对象。装饰函数的内容要根据任务内容的处理逻辑来编写,根据任务内容的不同,编写不同的装饰函数,最后调用装饰函数的方式是固定的。
127.具体的,对处理任务的任务内容使用装饰器进行装饰的方式可以包括:
128.步骤b1,定义处理任务的任务函数;
129.步骤b2,定义各个子任务的装饰函数即装饰器,其中,不同装饰函数用于实现不同的处理步骤;
130.步骤b3,根据处理任务的任务内容,在任务函数中声明所要调用的装饰函数,即针对处理任务的每一子任务的装饰函数,其中,在python语言中,使用符号@声明所要调用的装饰函数。
131.本发明中,将处理任务的多个处理步骤分别由装饰器进行装饰,不同的装饰器用于实现不同的处理步骤,也就是,用于实现不同子任务的任务内容。例如,a组数据需要o、p处理逻辑来进行数据处理,b组数据需要p逻辑来进行数据处理,则可以针对处理逻辑o和p分别设计装饰器,得到两个装饰器,其中,一个装饰器用于实现处理逻辑o,另一装饰器用于实现处理逻辑p。那么,针对a组数据对应的处理任务,利用处理逻辑o、p的装饰器来装饰,针对b组数据对应的处理任务,利用处理逻辑p的装饰器进行装饰。这样,在需要增加处理逻辑时,可以创建一个装饰器,需要删除处理逻辑也只需要使对应的装饰器失效,这样,可以大大降低不同处理逻辑之间的耦合性。
132.在数据处理的过程中,目标处理线程可以依次执行处理任务所包括的、基于装饰器所生成的各个子任务,如图4所示,执行处理任务所包括的、基于装饰器所生成的各个子任务,可以包括以下步骤:
133.s401,基于待处理数据的指定信息,判断待处理数据的目标类别;其中,目标类别为预先设定的多个类别中的一种;不同的类别对应不同的处理逻辑;指定信息可以为待处理数据的数据提供方、数据类型等用于数据分类的信息;
134.s402,确定目标类别所对应的目标处理任务包括的、基于装饰器所生成的各个目标子任务;
135.s403,依次执行各个目标子任务。
136.相应的,若在一子任务的执行过程中,发起功能调用,则释放该目标处理线程,并在功能调用结束后,再次选取一个空闲的处理线程,以继续执行该处理任务的任务内容。其中,所选取的空闲的处理线程继续执行该处理任务的任务内容可以包括;若发起功能调用本身属于一个子任务,则可以确定功能调用所属的子任务的下一子任务,并从所确定的下一子任务开始继续执行剩余的子任务;若功能调用为一个子任务的部分任务内容,则可以继续执行功能调用所属的子任务的剩余任务内容,并执行剩余的其他的子任务。
137.本实施例中,处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容,可见,通过本方案可以提高数据传输系统的工作效率,进一步地,通过装饰器进行装饰到任务内容,可以降低不同处理任务的处理逻辑之间的耦合性。
138.为了方便理解,下面结合附图,对本发明所提供的数据处理方法进行示例性介绍。
139.如图5所示,数据提供方与数据需求方之间的上下行数据,均可以视作待处理数据。数据传输系统可以建立两个websocket,一个与数据提供方,另一个与数据需求方,以分别实现和数据提供方及数据需求方的双向数据传输。以待处理数据为下行数据为例,本发明实施例的数据处理可以包括以下步骤:
140.步骤a1,在接收到数据提供方发送的下行数据的情况下,数据传输系统先从中转线程池中分配一个指定接收线程,将该下行数据存入数据下行队列的待处理队列中;
141.步骤a2,判断该下行数据是否需要加工处理;
142.步骤a3,若不需要加工处理,则直接将下行数据存入数据下行队列的指定发送队列中,从中转线程池中分配指定发送线程,将该下行数据发送至数据需求方;
143.步骤a4,若需要加工处理,则为下行加工线程池中空闲的处理线程分配针对待处理的下行数据的处理任务,其中,下行加工线程池包含多个处理线程,用于处理下行数据的处理任务;且在目标处理线程执行处理任务的过程中发起功能调用的情况下,释放该目标处理线程,并在功能调用结束后,再次选取一个空闲的处理线程以执行该处理任务未完成的任务内容;在处理任务完成后,将下行数据存入数据下行队列的指定发送队列中;再从中转线程池中分配指定发送线程,将该下行数据发送至数据需求方。
144.上行数据的处理流程与下行数据类似,在此不再赘述。
145.本发明实施例提供的数据处理方法,先确定待处理数据;再为目标处理线程分配针对所述待处理数据的处理任务;在目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放该目标处理线程,并在功能调用结束后,再次选取一个空闲的处理线程以执行该处理任务未完成的任务内容;在处理任务结束后,将处理结果发送至数据需求方。可见,本方案中,在目标处理线程执行处理任务的过程中发起功能调用的情况下,对该目标处理线程执行释放操作,这样,该目标处理线程可以继续处理其他任务,不必等待功能调用结束。因此,通过本方案,可以提高数据传输系统的工作效率。
146.本发明实施例还提供一种数据处理装置,如图6所示,该装置包括:
147.确定模块610,用于确定待处理数据;其中,所述待处理数据为数据提供方发送的一目标数据;
148.分配模块620,用于为目标处理线程分配针对所述待处理数据的处理任务;
149.调用模块630,用于在所述目标处理线程执行所述处理任务的过程中发起功能调
用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
150.发送模块640,用于在所述处理任务结束后,将处理结果发送至数据需求方。
151.可选地,所述装置还包括:
152.存储模块,用于在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;
153.所述确定模块,具体用于:
154.若检测到所述待处理队列中存在待处理的目标数据时,确定所述待处理队列中的一目标数据,作为待处理数据。
155.可选地,所述目标处理线程在执行所述处理任务的过程中发起功能调用的方式,包括:
156.所述数据处理线程调用所述外部装置的接口,使得所述外部装置读取该处理线程正在处理的数据,并执行针对该数据的数据处理任务的外部处理。
157.可选地,所述调用模块,在功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容,包括:
158.在监听到所述外部装置完成针对所述处理任务的外部处理的情况下,再次选取一个空闲的处理线程执行该处理任务未完成的任务内容。
159.可选地,所述存储模块通过指定接收线程实现;
160.所述指定接收线程在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;其中,所述指定发送线程为第一线程池中的一空闲的线程。
161.可选地,所述装置还包括:
162.放入模块,用于所述发送模块将处理结果发送至数据需求方之前,将所述待处理数据对应的处理结果放入指定发送队列;
163.所述发送模块,具体用于:
164.在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定发送线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定发送线程为第二线程池中的空闲的线程。
165.可选地,所述处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容。
166.本发明实施例还提供了一种电子设备,如图7所示,包括处理器701、通信接口702、存储器703和通信总线704,其中,处理器701,通信接口702,存储器703通过通信总线704完成相互间的通信,
167.存储器703,用于存放计算机程序;
168.处理器701,用于执行存储器703上所存放的程序时,实现如下步骤:
169.确定待处理数据;其中,所述待处理数据为数据提供方发送的待处理的一目标数据;
170.从多个处理线程中,选取空闲的目标处理线程;
171.为所述目标处理线程分配针对所述待处理数据的处理任务;
172.在所述目标处理线程执行所述处理任务的过程中发起功能调用的情况下,释放所述目标处理线程,并在所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容;其中,所述功能调用表征利用外部装置处理所述待处理数据;
173.在所述处理任务结束后,将处理结果发送至数据需求方。
174.在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;
175.所述确定待处理数据,包括:
176.若检测到所述待处理队列中存在待处理的目标数据时,确定所述待处理队列中的一目标数据,作为待处理数据。
177.所述目标处理线程在执行所述处理任务的过程中发起功能调用的方式,包括:
178.所述数据处理线程调用所述外部装置的接口,使得所述外部装置读取该处理线程正在处理的数据,并执行针对该数据的数据处理任务的外部处理。
179.所述功能调用结束后,再次选取一个空闲的处理线程以执行所述处理任务未完成的任务内容,包括:
180.在监听到所述外部装置完成针对所述处理任务的外部处理的情况下,再次选取一个空闲的处理线程执行该处理任务未完成的任务内容。
181.所述在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列,包括:
182.指定接收线程在接收到数据提供方发送的目标数据的情况下,将所接收的目标数据存入待处理队列;其中,所述指定接收线程为第一线程池中的一空闲的线程。
183.所述将处理结果发送至数据需求方之前,所述方法还包括:
184.将所述待处理数据对应的处理结果放入指定发送队列;
185.所述将处理结果发送至数据需求方,包括:
186.在检测到所述待处理数据对应的处理结果为所述指定发送队列中的待发送数据的情况下,为指定发送线程分配针对所述待处理数据对应的处理结果的发送任务;其中,所述指定发送线程为第二线程池中的空闲的线程。
187.所述处理任务的任务内容为采用装饰器进行装饰的方式所得到的任务内容。
188.上述电子设备提到的通信总线可以是外设部件互连标准(peripheral component interconnect,pci)总线或扩展工业标准结构(extended industry standard architecture,eisa)总线等。该通信总线可以分为地址总线、数据总线、控制总线等。为便于表示,图中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
189.通信接口用于上述电子设备与其他设备之间的通信。
190.存储器可以包括随机存取存储器(random access memory,ram),也可以包括非易失性存储器(non-volatile memory,nvm),例如至少一个磁盘存储器。可选的,存储器还可以是至少一个位于远离前述处理器的存储装置。
191.上述的处理器可以是通用处理器,包括中央处理器(central processing unit,cpu)、网络处理器(network processor,np)等;还可以是数字信号处理器(digital signal processor,dsp)、专用集成电路(application specific integrated circuit,asic)、现场可编程门阵列(field-programmable gate array,fpga)或者其他可编程逻辑器件、分立
门或者晶体管逻辑器件、分立硬件组件。
192.在本发明提供的又一实施例中,还提供了一种计算机可读存储介质,该计算机可读存储介质内存储有计算机程序,所述计算机程序被处理器执行时实现上述任一数据处理方法的步骤。
193.在本发明提供的又一实施例中,还提供了一种包含指令的计算机程序产品,当其在计算机上运行时,使得计算机执行上述实施例中任一数据处理方法的步骤。
194.在上述实施例中,可以全部或部分地通过软件、硬件、固件或者其任意组合来实现。当使用软件实现时,可以全部或部分地以计算机程序产品的形式实现。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载和执行所述计算机程序指令时,全部或部分地产生按照本发明实施例所述的流程或功能。所述计算机可以是通用计算机、专用计算机、计算机网络、或者其他可编程装置。所述计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,所述计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线(dsl))或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。所述计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集成的服务器、数据中心等数据存储设备。所述可用介质可以是磁性介质,(例如,软盘、硬盘、磁带)、光介质(例如,dvd)、或者半导体介质(例如固态硬盘solid state disk(ssd))等。
195.需要说明的是,在本文中,诸如第一和第二等之类的关系术语仅仅用来将一个实体或者操作与另一个实体或操作区分开来,而不一定要求或者暗示这些实体或操作之间存在任何这种实际的关系或者顺序。而且,术语“包括”、“包含”或者其任何其他变体意在涵盖非排他性的包含,从而使得包括一系列要素的过程、方法、物品或者设备不仅包括那些要素,而且还包括没有明确列出的其他要素,或者是还包括为这种过程、方法、物品或者设备所固有的要素。在没有更多限制的情况下,由语句“包括一个
……”
限定的要素,并不排除在包括所述要素的过程、方法、物品或者设备中还存在另外的相同要素。
196.本说明书中的各个实施例均采用相关的方式描述,各个实施例之间相同相似的部分互相参见即可,每个实施例重点说明的都是与其他实施例的不同之处。
197.以上所述仅为本发明的较佳实施例,并非用于限定本发明的保护范围。凡在本发明的精神和原则之内所作的任何修改、等同替换、改进等,均包含在本发明的保护范围内。
再多了解一些

本文用于企业家、创业者技术爱好者查询,结果仅供参考。

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

相关文献