任務調度方法、裝置和系統與流程
2023-12-07 07:24:11 4

本公開涉及計算機技術領域,尤其涉及一種任務調度方法、裝置和系統。
背景技術:
在web(網頁)開發中,我們經常會遇到需要處理長耗時任務的情況,這些任務可能是用戶提交的,比如群發郵件的任務;也可能是系統被某個事件觸發的。如果是用戶提交的任務,用戶需要實時等待伺服器處理完畢,而在此期間用戶不能關閉瀏覽器窗口,如果任務處理速度非常慢,那用戶體驗將會受到很大影響。
對此,通常的解決方法是使用隊列軟體實現異步任務處理機制。例如,伺服器接收到用戶提交的請求之後,把消息寫入隊列,並立刻返回處理結果給用戶,告知用戶任務正在進行中(如郵件正在發送中)。同時,多個隊列消費進程會從隊列中讀取消息,並對消息進行處理。
然而,本發明的發明人發現,上述方案在實際應用中往往會存在隊列任務中高優先級任務無法及時處理問題。
技術實現要素:
鑑於現有技術中的上述缺陷或不足,期望提供一種保障高優先級任務能夠得到及時處理的方案。
第一方面,本申請實施例提供了一種任務調度方法,所述方法包括:
從預設的數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務;所述數據表中記錄了任務狀態和任務創建時配置的調度影響參數;
根據所述調度影響參數,計算各待運行的任務的調度優先級;以及
按照所述調度優先級從高到低的順序,依序執行待運行的任務。
第二方面,本申請實施例還提供了一種任務調度裝置,所述裝置包括:
任務篩選單元,配置用於從預設的數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務;所述數據表中記錄了任務狀態和任務創建時配置的調度影響參數;
優先級計算單元,配置用於根據所述調度影響參數,計算各待運行的任務的調度優先級;以及
任務調度運行單元,配置用於按照所述調度優先級從高到低的順序,依序執行待運行的任務。
第三方面,本申請實施例還提供了一種任務調度系統,所述系統包括:任務創建模塊和任務調度模塊;其中,
所述任務創建模塊配置用於任務創建時配置對應的任務狀態和調度影響參數,並存儲於預設的數據表中;
所述任務調度模塊配置用於創建工作進程,所述工作進程用於從所述數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務;根據所述調度影響參數,計算各待運行的任務的調度優先級;按照所述調度優先級從高到低的順序,依序執行待運行的任務。
第四方面,本申請實施例還提供了一種計算設備,包括一個或多個處理器以及存儲器,所述存儲器包含可由所述處理器執行的指令以使得所述處理器執行本申請實施例提供的任務調度方法。
第五方面,本申請實施例還提供了一種存儲有電腦程式的計算機可讀存儲介質,所述電腦程式使計算機執行本申請實施例提供的任務調度方法。
本申請實施例提供的方案,可以基於實際考慮設置不同的調度影響參數;基於任務狀態和任務創建時配置的調度影響參數,計算各待運行的任務的調度優先級,從而能夠按照優先級高低順序進行執行,保障高優先級任務能夠得到及時處理,提高用戶體驗。
進一步地,本申請實施例提供的方案,可以基於任務的預期開始時刻、超時時長等內容,對任務的運行時間進行控制,使得等待時間較長的任務能夠及時被處理,以及超時任務能夠及時被清除,以此避免出現任務積壓。
附圖說明
通過閱讀參照以下附圖所作的對非限制性實施例所作的詳細描述,本申請的其它特徵、目的和優點將會變得更明顯:
圖1示出了其中可以應用本申請實施例的示例性系統架構;
圖2示出了根據本申請實施例的任務調度方法的示例性流程圖;
圖3示出了根據本申請一個實施例的任務調度裝置的示例性結構圖;
圖4示出了根據本申請一個實施例的任務調度系統的示例性結構圖;
圖5示出了根據本申請另一實施例的運行在linux系統的示例性結構框圖;以及
圖6示出了根據本申請一個實施例的計算設備的示例性結構框圖。
具體實施方式
下面結合附圖和實施例對本申請作進一步的詳細說明。可以理解的是,此處所描述的具體實施例僅僅用於解釋相關發明,而非對該發明的限定。另外還需要說明的是,為了便於描述,附圖中僅示出了與發明相關的部分。
需要說明的是,在不衝突的情況下,本申請中的實施例及實施例中的特徵可以相互組合。下面將參考附圖並結合實施例來詳細說明本申請。
請參考圖1,其示出了可以應用本申請實施例的示例性系統架構100。
如圖1所示,系統架構100可以包括終端設備101、102、網絡103和伺服器104、105、106和107。網絡103用以在終端設備101、102和伺服器104、105、106、107之間提供通信鏈路的介質。網絡103可以包括各種連接類型,例如有線、無線通信鏈路或者光纖電纜等等。
用戶110可以使用終端設備101、102通過網絡103與伺服器104、105、106、107交互,以訪問各種服務,例如瀏覽網頁、下載數據等。終端設備101、102上可以安裝有各種客戶端應用,例如可以接入統一資源定位符url雲服務的應用,包括但不限於瀏覽器、安全應用等。
終端設備101、102可以是各種電子設備,包括但不限於個人電腦、智慧型手機、智能電視、平板電腦、個人數字助理、電子書閱讀器等等。
伺服器104、105、106、107可以是提供各種服務的伺服器。伺服器可以響應於用戶的服務請求而提供服務。可以理解,一個伺服器可以提供一種或多種服務,同一種服務也可以由多個伺服器來提供。
應該理解,圖1中的終端設備、網絡和伺服器的數目僅僅是示意性的。根據實現需要,可以具有任意數目的終端設備、網絡和伺服器。
如背景技術中所提到的,現有技術使用隊列軟體實現異步任務處理機制的方案中,任務沒有優先級的概念,同一隊列中的多個任務只能按照寫入隊列的順序先進先出地依次處理,導致高優先級的任務無法得到及時處理;而且,任務處理過程中,無法控制任務的運行時間上限,如果大量任務被懸掛住而長時間無法結束,則極有可能會造成隊列消費進程耗盡,從而造成隊列任務積壓。
鑑於現有技術的上述缺陷,本申請實施例提供了一種任務調度方法,可預先基於實際需求設置調度影響參數;繼而,在任務創建時配置對應的任務狀態和調度影響參數;這樣,後續可根據調度影響參數,計算出任務的調度優先級,根據調度優先級的高低順序進行依次執行。這樣,可保障高優先級的任務得到及時處理,提高用戶體驗。
下面將結合流程圖來描述本申請實施例的方法。
參考圖2,其示出了根據本申請一個實施例的任務調度方法的示例性流程圖。圖2所示的方法可以在圖1中的伺服器端或客戶端執行。
如圖2所示,在步驟210中,從預設的數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務。
其中,數據表中記錄了任務狀態和任務創建時配置的調度影響參數。
任務狀態為如下任意一種:已創建為運行、運行中、運行結束、被結束。當然,實際應用中可以根據需求減少或增設任務狀態。
本申請實施例中,調度影響參數可以包括但不限於:任務原始優先級、預期開始時刻。
其中,任務原始優先級的可選值包括:非常低、低、中、高、非常高。
預期開始時刻的配置可便於實現任務運行的時間控制,比如定時運行。
實際應用中,任務創建時在數據表中還可存儲:任務id(身份標識)、任務消費進程所在主機名稱、任務消費進程的進程id等。
接著,在步驟220中,根據調度影響參數,計算各待運行的任務的調度優先級。
具體地,當調度影響參數包括任務原始優先級時,針對待運行的每個任務,可執行如下操作:
根據該任務的任務類型,確定對應的類型調度權重;以及
根據該任務的任務原始優先級、所述類型調度權重,計算該任務的調度優先級。
當調度影響參數包括預期開始時刻時,針對待運行的每個任務,可執行如下操作:
根據當前時刻和所述調度影響參數中的預期開始時刻,確定該任務當前的任務等待時長;
根據所述任務等待時長,確定對應的時長調度權重;以及
根據該任務的任務等待時長、所述時長調度權重,計算該任務的調度優先級。
而當調度影響參數包括預期開始時刻和任務原始優先級的情況下,可針對待運行的每個任務,執行如下操作:
根據當前時刻和調度影響參數中的預期開始時刻,確定該任務當前的任務等待時長;根據確定出的任務等待時長,確定對應的時長調度權重;根據該任務的任務類型,確定對應的類型調度權重;以及根據該任務的任務原始優先級、任務等待時長、類型調度權重和時長調度權重,計算該任務的調度優先級。
其中,任務當前的任務等待時長可以當前時刻與調度影響參數中的預期開始時刻的差值;或者,將調度影響參數中的預期開始時刻累加上預設的預期等待時長之後,將當前時刻與累加後時刻的差值作為任務當前的任務等待時長。
實際應用中,針對不同任務類型,可預先設置不同的類型調度權重;比如,相較於應用級,系統級的類型調度權重更高。
預先劃分不同級別的任務等待範圍,不同級別的任務等待範圍對應不同的時長調度權重;任務等待範圍的端點取值越大,時長調度權重越高。這樣,當任務當前的任務等待時長處於某一任務等待範圍,則可以將該範圍對應的時長調度權重作為該任務等待時長所對應的時長調度權重。
任務的調度優先級可根據該任務的任務原始優先級與對應的類型調度權重的乘積,以及任務等待時長與對應的時長調度權重的乘積來計算,具體計算方法可更加實際需求進行設置。
這樣,對於任務原始優先級較高的任務、和/或任務等待時長較長的任務,其所對應的調度優先級也會相應較高,便於後續可保證高優先級的任務和等待時長較長的任務能夠及時得到處理,避免出現任務積壓,提高用戶體驗。
之後,在步驟230中,按照調度優先級從高到低的順序,依序執行待運行的任務。
本申請實施例中,通過步驟220計算出各待運行的任務的調度優先級後,可按照從高到低的順序,從數據表中依序執行待運行的任務。
相對於現有技術基於任務的創建時間或者加入隊伍的先後來決定任務的執行順序,本申請實施例的方案中,基於任務創建時配置的調度影響參數來決定任務的執行順序,可保證高優先級的任務能夠及時得到處理,提高用戶體驗。
實際應用中,數據表中還記錄了任務創建時配置的指定下遊處理模塊和任務輸入參數。因此,在執行待運行的任務時,可以更新數據表中對應任務狀態為運行中;以及根據對應的任務輸入參數,調用對應的指定下遊處理模塊執行該待運行的任務。
相應地,在執行待運行的任務之後,可以將任務執行結束後返回的任務返回值寫入數據表中,並更新數據表中任務狀態為運行結束。為了避免任務積壓,後續可以按照第二設定周期對數據表中任務狀態為運行結束的任務進行刪除。
進一步地,本發明的發明人考慮,實際運行中,如果存在大量任務被懸掛住而長時間無法結束,則極有可能會造成隊列消費進程耗盡,從而造成隊列任務積壓,因此,本申請實施例的方案中,在任務創建時數據表中還記錄了任務創建時配置的超時時長,用於周期性地檢測數據表中有沒有超時的任務,以便及時清理,避免任務積壓。
具體地,可以按照第一設定周期,根據超時時長,從數據表中任務狀態為運行中的任務中,檢測出超時任務;結束檢測出的超時任務,並更新數據表中任務狀態為被結束。
例如,當前周期到達後,可以篩選出數據表中任務狀態為運行中的任務;繼而,針對篩選出的任務,根據當前時刻和開始運行時時刻,計算任務的運行時長;若運行時長大於該任務對應的超時時長,則確定該任務為超時任務。或者,可以將當前時刻與預期運行時刻的差值,與超時時長進行比較,若該差值大於超時時長,則確定該任務為超時任務。
相應地,後續可以按照第三設定周期對數據表中任務狀態為被結束的任務進行刪除,完成對超時任務的及時清理,避免出現任務積壓。
進一步參考圖3,其示出了根據本申請一個實施例的任務調度裝置300的示例性結構框圖。
如圖3所示,本申請實施例的任務調度裝置可以包括:任務篩選單元301、優先級計算單元302和任務調度運行單元303。
其中,任務篩選單元301配置用於從預設的數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務。
其中,數據表中記錄了任務狀態和任務創建時配置的調度影響參數。
本申請實施例中,調度影響參數可以包括但不限於:任務原始優先級、預期開始時刻。任務原始優先級的可選值包括:非常低、低、中、高、非常高。預期開始時刻的配置可便於實現任務運行的時間控制,比如定時運行。
實際應用中,任務創建時在數據表中還可存儲:任務id、任務消費進程所在主機名稱、任務消費進程的進程id等。
優先級計算單元302配置用於根據調度影響參數,計算各待運行的任務的調度優先級。
本申請實施例中,調度影響參數包括任務原始優先級時,優先級計算單元302配置用於針對待運行的每個任務,執行如下操作:根據該任務的任務類型,確定對應的類型調度權重;以及根據該任務的任務原始優先級、類型調度權重,計算該任務的調度優先級。
當調度影響參數包括預期開始時刻時,優先級計算單元302配置用於針對待運行的每個任務,執行如下操作:根據當前時刻和調度影響參數中的預期開始時刻,確定該任務當前的任務等待時長;根據任務等待時長,確定對應的時長調度權重;以及根據該任務的任務等待時長、時長調度權重,計算該任務的調度優先級。
進一步地,當調度影響參數包括預期開始時刻和任務原始優先級時,優先級計算單元302配置用於針對待運行的每個任務,執行如下操作:根據當前時刻和調度影響參數中的預期開始時刻,確定該任務當前的任務等待時長;根據任務等待時長,確定對應的時長調度權重;根據該任務的任務類型,確定對應的類型調度權重;以及根據該任務的任務原始優先級、任務等待時長、類型調度權重和時長調度權重,計算該任務的調度優先級。
其中,任務當前的任務等待時長可以是當前時刻與調度影響參數中的預期開始時刻的差值;或者,將調度影響參數中的預期開始時刻累加上預設的預期等待時長之後,將當前時刻與累加後時刻的差值作為任務當前的任務等待時長。
實際應用中,可預先劃分不同級別的任務等待範圍,不同級別的任務等待範圍對應不同的時長調度權重;任務等待範圍的端點取值越大,時長調度權重越高。這樣,當任務當前的任務等待時長處於某一任務等待範圍,則可以將該範圍對應的時長調度權重作為該任務等待時長所對應的時長調度權重。而針對不同任務類型,可預先設置不同的類型調度權重;比如,相較於應用級,系統級的類型調度權重更高。
任務的調度優先級可根據該任務的任務原始優先級與對應的類型調度權重的乘積,以及任務等待時長與對應的時長調度權重的乘積來計算,具體計算方法可更加實際需求進行設置。
任務調度運行單元303配置用於按照調度優先級從高到低的順序,依序執行待運行的任務。
更優地,數據表中還記錄了任務創建時配置的指定下遊處理模塊和任務輸入參數。
任務調度運行單元303還配置用於更新數據表中對應任務狀態為運行中;以及根據任務輸入參數,調用指定下遊處理模塊執行待運行的任務。
進一步地,任務調度運行單元303還配置用於將任務執行結束後返回的任務返回值寫入數據表中,並更新數據表中任務狀態為運行結束。
更優地,數據表中還記錄了任務創建時配置的超時時長。
任務調度運行單元303還配置用於按照第一設定周期,根據超時時長,從數據表中任務狀態為運行中的任務中,檢測出超時任務;結束檢測出的超時任務,並更新數據表中任務狀態為被結束。
進一步地,任務調度運行單元303還配置用於按照第二設定周期對數據表中任務狀態為運行結束的任務進行刪除;和/或按照第三設定周期對數據表中任務狀態為被結束的任務進行刪除。
應當理解,裝置300中記載的諸單元與參考圖2描述的方法中的各個步驟相對應。由此,上文針對方法描述的操作和特徵同樣適用於裝置300及其中包含的單元,在此不再贅述。
從上面描述可以看出,在本申請的一些實施例中,針對任務執行的問題,提出了根據預先配置的調度影響參數計算任務優先級的方案。這樣,基於實際考慮設置不同的調度影響參數,並根據任務狀態和任務創建時配置的調度影響參數,計算出各待運行的任務的調度優先級之後,可按照優先級高低順序進行執行,保障高優先級任務能夠得到及時處理,提高用戶體驗。
進一步地,本申請實施例提供的方案,可以基於任務的預期開始時刻、超時時長等內容,對任務的運行時間進行控制,使得等待時間較長的任務能夠及時被處理,以及超時任務能夠及時被清除,以此避免出現任務積壓。
進一步參考圖4,其示出了根據本申請一個實施例的任務調度系統400的示例性結構框圖。
如圖4所示,本申請實施例的任務調度系統400可以包括:任務創建模塊401和任務調度模塊402。
其中,任務創建模塊401配置用於任務創建時配置對應的任務狀態和調度影響參數,並存儲於預設的數據表中。
任務調度模塊402配置用於創建工作進程,工作進程用於從數據表中篩選出任務狀態為已創建未運行的所有任務,作為待運行的任務;根據調度影響參數,計算各待運行的任務的調度優先級;按照調度優先級從高到低的順序,依序執行待運行的任務。
更優地,任務創建模塊401還配置用於在數據表中記錄任務創建時配置的超時時長。相應地,任務調度模塊402還配置用於創建監視進程,監視進程用於按照第一設定周期,根據超時時長,從數據表中任務狀態為運行中的任務中,檢測出超時任務;以及工作進程結束檢測出的超時任務,並更新數據表中任務狀態為被結束。
更優地,任務調度模塊還配置用於創建清除進程,清除進程用於按照第二設定周期對數據表中任務狀態為運行結束的任務進行刪除;和/或按照第三設定周期對數據表中任務狀態為被結束的任務進行刪除。
更優地,任務調度模塊還配置用於監測工作進程、監視進程和清除進程,在出現指定的異常情況時重新創建。
參考圖5,其示出了根據本申請一個實施例的運行在linux系統的示例性結構框圖。
本申請實施例運行在linux系統,具體實現方案如下:
1、任務存儲:
需要在資料庫中創建一張數據表,用來保存任務。數據表中的欄位主要有:任務id、任務原始優先級、任務輸入參數、任務返回值、任務狀態、下遊處理模塊、任務消費進程所在主機名稱、任務消費進程的進程id、超時運行時長、預期運行時間、任務開始運行的時間等。
其中,任務狀態可選值有4種:1已創建未運行、2運行中、3運行結束、4被結束。
2、任務創建:
a)生產者向數據表中寫入一條任務狀態欄位值為1的記錄,即為創建一個任務。
b)在創建任務的時候,需要明確指定下遊處理模塊及任務輸入參數欄位。
c)任務原始優先級、超時運行時長,預期開始時刻欄位,在未進行特殊配置時,可採取默認值,比如分別為中級,600秒,當前時間戳(表示此任務可以立刻開始執行)。
3、任務調度:
a)daemon(守護)程序多機布署。
b)daemon程序啟動之後,如圖5所示,會創建三類子進程,分別是:1個monitor(監視)進程,1個purge(清除)進程,還有多個worker(工作)進程。
c)worker進程根據以下條件對數據表中的任務進行篩選:
1)任務狀態值為1(已創建未運行)。
2)當前時間戳大於等於預期開始時刻欄位的值。
如果篩選出來的任務列表為空,則隔一段時間之後再次嘗試獲取任務。
如果篩選出來的任務列表非空,記為集合a,則可對集合a按照以下規則進行排序操作:
1)定義調度優先級公式為:p=任務原始優先級*a+任務等待時長*b,其中,係數a為預先設置的類型調度權重,係數b為預先設置的時長調度權重。
2)對於集合a中的全部任務,依次計算其p值。
3)按照p值,對集合a中的任務進行降序排列。
排序之後,worker進程從集合a中取出第一個任務(調度優先級最高的任務),並把自己的進程id與主機名更新到數據表中,同時設置任務狀態為2(運行中)。
之後,以數據表的任務輸入參數欄位做為參數,調用指定下遊處理模塊欄位所代表下遊模塊的執行接口,來實際執行任務。
最終把接口輸出的結果寫回到數據表的任務返回值欄位,同時更新數據表的任務狀態欄位值為3(運行結束)。
d)purge進程周期性地刪除已經完成的歷史任務,避免數據表中歷史數據過多。
e)monitor進程周期性地檢測數據表中有沒有超時的任務。
檢測條件為:當前時間戳減去預期運行時刻欄位的值之後,是否大於超時時長欄位的值。
如果有超時任務,則結束該工作進程的運行,同時把數據表中的任務狀態欄位設置為4(被結束)。這樣就可以防止任務運行時間超長,導致worker進程耗盡,進而造成任務積壓。
f)daemon進程周期性地監測worker,purge,monitor進程的數量,如果小於閾值,則重新派生足夠數量的子進程。
下面參考圖6,其示出了適於用來實現本申請實施例的計算設備600的結構示意圖。
如圖6所示,計算機設備600包括中央處理單元(cpu)601,其可以根據存儲在只讀存儲器(rom)602中的程序或者從存儲部分608加載到隨機訪問存儲器(ram)603中的程序而執行各種適當的動作和處理。在ram603中,還存儲有系統600操作所需的各種程序和數據。cpu601、rom602以及ram603通過總線604彼此相連。輸入/輸出(i/o)接口605也連接至總線604。
以下部件連接至i/o接口605:包括鍵盤、滑鼠等的輸入部分606;包括諸如陰極射線管(crt)、液晶顯示器(lcd)等以及揚聲器等的輸出部分607;包括硬碟等的存儲部分608;以及包括諸如lan卡、數據機等的網絡接口卡的通信部分609。通信部分609經由諸如網際網路的網絡執行通信處理。驅動器610也根據需要連接至i/o接口605。可拆卸介質611,諸如磁碟、光碟、磁光碟、半導體存儲器等等,根據需要安裝在驅動器610上,以便於從其上讀出的電腦程式根據需要被安裝入存儲部分608。
特別地,根據本公開的實施例,上文參考圖2描述的過程可以被實現為計算機軟體程序。例如,本公開的實施例包括一種電腦程式產品,其包括有形地包含在機器可讀介質上的電腦程式,電腦程式包含用於執行圖2的方法的程序代碼。在這樣的實施例中,該電腦程式可以通過通信部分609從網絡上被下載和安裝,和/或從可拆卸介質611被安裝。
附圖中的流程圖和框圖,圖示了按照本發明各種實施例的系統、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊或單元、程序段、或代碼的一部分,模塊或單元、程序段、或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個接連地表示的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。
描述於本申請實施例中所涉及到的單元或模塊可以通過軟體的方式實現,也可以通過硬體的方式來實現。所描述的單元或模塊也可以設置在處理器中。這些單元或模塊的名稱在某種情況下並不構成對該單元或模塊本身的限定。
附圖中的流程圖和框圖,圖示了按照本發明各種實施例的系統、方法和電腦程式產品的可能實現的體系架構、功能和操作。在這點上,流程圖或框圖中的每個方框可以代表一個模塊、程序段、或代碼的一部分,模塊、程序段、或代碼的一部分包含一個或多個用於實現規定的邏輯功能的可執行指令。也應當注意,在有些作為替換的實現中,方框中所標註的功能也可以以不同於附圖中所標註的順序發生。例如,兩個接連地表示的方框實際上可以基本並行地執行,它們有時也可以按相反的順序執行,這依所涉及的功能而定。也要注意的是,框圖和/或流程圖中的每個方框、以及框圖和/或流程圖中的方框的組合,可以用執行規定的功能或操作的專用的基於硬體的系統來實現,或者可以用專用硬體與計算機指令的組合來實現。
描述於本申請實施例中所涉及到的單元或模塊可以通過軟體的方式實現,也可以通過硬體的方式來實現。所描述的單元或模塊也可以設置在處理器中。這些單元或模塊的名稱在某種情況下並不構成對該單元或模塊本身的限定。
作為另一方面,本申請還提供了一種存儲有電腦程式的計算機可讀存儲介質,該計算機可讀存儲介質可以是上述實施例中所述計算設備中所包含的計算機可讀存儲介質;也可以是單獨存在,未裝配入設備中的計算機可讀存儲介質。計算機可讀存儲介質存儲有一個或者一個以上程序,所述程序被一個或者一個以上的處理器用來執行描述於本申請的公式輸入方法。
以上描述僅為本申請的較佳實施例以及對所運用技術原理的說明。本領域技術人員應當理解,本申請中所涉及的發明範圍,並不限於上述技術特徵的特定組合而成的技術方案,同時也應涵蓋在不脫離所述發明構思的情況下,由上述技術特徵或其等同特徵進行任意組合而形成的其它技術方案。例如上述特徵與本申請中公開的(但不限於)具有類似功能的技術特徵進行互相替換而形成的技術方案。