Pyautogui多线程不起作用?

时间:2018-04-02 12:54:10

标签: windows multithreading python-3.x kernel pyautogui

此代码在第一次运行时完美运行。

import time as t
import pyautogui as p
import threading

def skincare1():
    p.alert("skincare level 1",'skincare 1')
    t.sleep(0.3)
    p.alert("skincare level 2",'skincare 2')

print('start')

threadem=threading.Thread(target=skincare1)
threadem.start()

print('end')

但是当我再次运行它时,会打印出“开始”和“结束”,并在几秒后打印出来:

An error ocurred while starting the kernel
Tcl_AsyncDelete: async handler deleted by the wrong thread

如果我重新启动内核,它第一次正常工作,但第二次崩溃。 知道为什么吗?

编辑:
如果我取出睡眠部分,它仍然第一次运行良好,但在所有进一步的运行中给出相同的错误。但是如果我把一些非常简单的东西,比如'打印('中间部分')'和睡眠一样,它总是运行良好。所以这是由pyautogui引起的。

import time as t
import pyautogui as p
import threading

def skincare1():
    p.alert("skincare level 1",'skincare 1')

print('start')

threadem=threading.Thread(target=skincare1)
threadem.start()

print('end')

1 个答案:

答案 0 :(得分:0)

这可能是因为编译器本身决定首先运行哪个线程,并且可能有可能当你让线程进入休眠状态时,由于开始和结束一起显示,然后编译器,它可能无法恢复活动状态。找不到并发出线程自动发送错误。