我想同時啓動兩個程序。如何提高AutoIt代碼的執行速度?
- 一個圖表顯示預期的實際輸出行(並且在執行後它顯示另一個輸出行)。
- 另一個在它裏面有一些應用。第二個程序必須在第一個程序(帶圖)的同時開始。
但兩個程序入門之間存在不必要的延遲(微秒)。有沒有辦法加快AutoIt的執行速度?
我想同時啓動兩個程序。如何提高AutoIt代碼的執行速度?
但兩個程序入門之間存在不必要的延遲(微秒)。有沒有辦法加快AutoIt的執行速度?
簡短的回答:第
更詳細的解釋:一臺計算機不能在精確的同一時間執行兩個程序。即使是多任務處理,也只是在程序之間快速切換,似乎是同時運行的效果,但事實上,它們按順序工作,而不是並行工作。即使有多個處理器內核,您也可以在一個內核上運行os調度程序,因此您可以使用大量的編程工作和定時器事件,使其運行兩個進程,每個進程都在一個專用內核上執行同一時鐘的給定類似入口點時間。但是這對你來說無能爲力,因爲你的輸出仍然會由單個顯卡和單個主板來處理,每個核心都有相同的中斷。所以對於你的具體問題,這是不可能的。
您實際上可以嘗試使用AdlibRegister
將來運行指定的函數,但它也會暫停主腳本的執行...... AutoIt不能同時運行多個函數。據我瞭解,它甚至沒有這樣做,因爲它是一種解釋型腳本語言。
您可以使用另一種能夠線程化的語言來執行您想要的操作。
不管怎樣,您的Run(...)
函數將不會等待終止執行,因爲RunWait
會。所以兩個Run
調用之間的差距應該很小。話雖如此,有待進一步討論的問題可能是:您想要達到什麼目的,以及如何在沒有AutoIt幫助的情況下實現目標?因爲你的點擊速度很可能比你對某些功能的調用速度要慢......你可以問另一個更具體的問題。但是,請提供一些示例代碼;-)
使用這個簡單的示例代碼,您可以真正證明即使使用兩個Run
調用,也不能確定程序實際上是否會以給定順序出現。至少在我的電腦上(Win7 64Bit,四核酷睿i5 3.1GHz,4GB RAM),這些線路會產生一些輸出,第二個運行調用窗口出現在第一個窗口之前...大約5-15%的時間。
Opt("WinTitleMatchMode", 2)
For $i = 1 To 50
$pid1 = Run("notepad")
$pid2 = Run("notepad")
$firstWin = WinWait("Notepad")
$winProcess = WinGetProcess($firstWin)
If $winProcess == $pid2 Then ConsoleWrite($pid1 & ", " & $pid2 & "; " & $winProcess & @CR)
ProcessClose($pid1)
ProcessClose($pid2)
Next
不使用AutoIt。或者設計你的程序,以便它可以處理時間延遲。 – Matt