zch11230 发表于 2012-2-20 14:21:43

[已解决]请教一个AU3有延时的多线程操作

本帖最后由 zch11230 于 2012-2-25 16:00 编辑

我需要对N多个账号进行操作 写了框架如下的小工具
Func _online只负责登陆账号操作过程中有少量延时 500左右 _clickSetup只负责点击出设置界面 极少延时 而且理论上可以不要延时 _readinfo负责读取出账号信息并进行对应的操作,有较多延时 可能有3秒左右三个FUNC互不影响 只有一个判断是否结束程序的变量 $leave需要传递 我试过分开保存为3个脚本文件来同时运行效果较好基本上1秒操作一个账号 但我在一个脚本下运行时就会增加到近2秒一个. 效率下降比较大.
用了论坛里面找的一个多线程示例没有延时的话还可以 但如果加了sleep延时 程序基本上就没有反映了. 请教一下有什么办法对这种有延时的情况进行多线程操作.

问题暂时没有完美解决但找到了方向   至少Coproc可以达到效果


While 1
        _online()
        _clickSetup()
        _readinfo()
        If $leave = 1 Then
                Do
                        _clickSetup()
                        _readinfo()
                Until Not WinExists($maintitle)
                MsgBox (0,"提示","操作完毕")
                ExitLoop
        EndIf       
WEnd

wan_2099 发表于 2012-2-20 14:27:05

看看,帮顶

xz00311 发表于 2012-2-20 14:27:22

其实我也想知道这个多帐号同时操作

xms77 发表于 2012-2-21 10:01:00

好像au3是不支持多进程的
有2秒的延迟很有影响吗?

zch11230 发表于 2012-2-21 12:08:52

好像au3是不支持多进程的
有2秒的延迟很有影响吗?
xms77 发表于 2012-2-21 10:01 http://www.autoitx.com/images/common/back.gif

就是比较影响效率相当于三个操作同时进行的话 一次循环需要3秒而依次进行的话 就是三个操作相加 近6秒而模拟多线程的操作和AdlibRegister差不多 都不能有延时存在程序会卡爆
昨天看了下资料 可能还是要从多开入手CoProc可以达到效果 但是CPU占用率高了点.

unique009 发表于 2012-2-21 15:40:40

多线程不可能比单线程快,队非是每个线程占一个CPU,但是现在很少有这种程序,只有多进程才能占多个CPU

unique009 发表于 2012-2-21 15:42:07

要想快只能多进程

zch11230 发表于 2012-2-21 22:30:28

多线程不可能比单线程快,队非是每个线程占一个CPU,但是现在很少有这种程序,只有多进程才能占多个CPU
unique009 发表于 2012-2-21 15:40 http://www.autoitx.com/images/common/back.gif

我这里的时间不是消耗在运算速度上 而是三个操作所产生的等待时间 比如打开一个窗口 等目标窗口出来之后对这个窗口进行操作这里就有一个winwait产生的等待时间单线程的话 三个依次执行一个执行 另外两个就等待 处于空闲状态浪费时间.

gzh888666 发表于 2012-2-25 01:46:43

只能多进程了!
页: [1]
查看完整版本: [已解决]请教一个AU3有延时的多线程操作