python2.7 下 的pyhook不间断卡住问题

裸奔的饺子 发布于 2018/09/28 08:52
阅读 547
收藏 0

直接上代码:

环境:windowXP、7、10

问题现象:Pyhook启动后,如果静置一段时间后,大约5分钟以上,Hook出现卡住现象,过好一会才有反应,如果不间断有按键输入的话,出现卡住的概率就很低。

详情:

tornado、python2.7   pyhook、   做了一个本地Python版的收银系统,利用

concurrent.futures.ProcessPoolExecutor

启动了若干个进程,其中一个进程为单独跑pyhook,工作的内容主要有:

1、监听快捷键唤醒

2、监听并过滤扫码枪扫描到的SKU条码,及客户付款码,进而通过消息队列将支付指令送往另外一个进程进行tessreact识别金额发起支付。

问题就是:放一会,TNND的hook就好似被休眠了一样,没反应了,过好一会才有反应。

键盘回调函数里,没有夹杂任何耗时操作,及其他IO操作(目前已经发现它会导致Hook直接卡死)。

哪位大神帮忙分析分析!

部分代码如下:

tornado  主函数:

with concurrent.futures.ProcessPoolExecutor(max_workers=max_workers) as executor:
    '''启动键盘监听'''
    executor.submit(run_listen)
    '''启动主程序'''
    executor.submit(run_main)
    '''启动定时任务'''
    executor.submit(run_schedule)

    if str(util.get_conf('keyboard','ocr'))=='1' or str(util.get_conf('keyboard','ocr_manual'))=='1':
        '''启动OCR'''
        executor.submit(run_ocr)
        if str(util.get_conf('keyboard', 'ocr')) == '1':
            '''启动悬浮框'''
            executor.submit(run_titleWins)

run_listen()函数内容:

def main():
    print('KeyBoard Listen Start.')
    hm = pyHook.HookManager()
    hm.KeyDown = onKeyboardEvent
    hm.HookKeyboard()
    pythoncom.PumpMessages()
加载中
0
j
jaredwu123

哈喽,你找到原因没,我的也遇到这个问题,在解决中,一起交流下呗,WX: 397484350

0
裸奔的饺子

最后我用了定时任务,利用win32api  每隔1秒不停的晃动鼠标正负1个坐标,才解决的。也是很无奈。

OSCHINA
登录后可查看更多优质内容
返回顶部
顶部