我想同时启动两个程序。如何提高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