找回密码
 加入
搜索
查看: 4164|回复: 8

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

  [复制链接]
发表于 2012-2-20 14:21:43 | 显示全部楼层 |阅读模式
本帖最后由 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
发表于 2012-2-20 14:27:05 | 显示全部楼层
看看,帮顶
发表于 2012-2-20 14:27:22 | 显示全部楼层
其实我也想知道这个多帐号同时操作
发表于 2012-2-21 10:01:00 | 显示全部楼层
好像au3是不支持多进程的
有2秒的延迟很有影响吗?
 楼主| 发表于 2012-2-21 12:08:52 | 显示全部楼层
好像au3是不支持多进程的
有2秒的延迟很有影响吗?
xms77 发表于 2012-2-21 10:01


就是比较影响效率  相当于三个操作同时进行的话 一次循环需要3秒  而依次进行的话 就是三个操作相加 近6秒  而模拟多线程的操作和AdlibRegister差不多 都不能有延时存在  程序会卡爆
昨天看了下资料 可能还是要从多开入手  CoProc可以达到效果 但是CPU占用率高了点.
发表于 2012-2-21 15:40:40 | 显示全部楼层
多线程不可能比单线程快,队非是每个线程占一个CPU,但是现在很少有这种程序,只有多进程才能占多个CPU
发表于 2012-2-21 15:42:07 | 显示全部楼层
要想快只能多进程
 楼主| 发表于 2012-2-21 22:30:28 | 显示全部楼层
多线程不可能比单线程快,队非是每个线程占一个CPU,但是现在很少有这种程序,只有多进程才能占多个CPU
unique009 发表于 2012-2-21 15:40


我这里的时间不是消耗在运算速度上 而是三个操作所产生的等待时间 比如打开一个窗口 等目标窗口出来之后对这个窗口进行操作  这里就有一个winwait产生的等待时间  单线程的话 三个依次执行  一个执行 另外两个就等待 处于空闲状态  浪费时间.
发表于 2012-2-25 01:46:43 | 显示全部楼层
只能多进程了!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-20 22:52 , Processed in 0.079187 second(s), 24 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表