Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python:在X秒后结束基于时间的循环_Python_Python 3.x_Loops_Time_Infinite Loop - Fatal编程技术网

Python:在X秒后结束基于时间的循环

Python:在X秒后结束基于时间的循环,python,python-3.x,loops,time,infinite-loop,Python,Python 3.x,Loops,Time,Infinite Loop,我的代码应该是鼠标左键每“y”秒在屏幕上的一个设置位置舔一次,该位置工作正常: import pyautogui def autoclick(): threading.Timer(0.1, autoclick).start() pyautogui.click(1230, 618) 问题在于结束循环 我想问一个时间: ScriptTime = int(input("Type the time in Seconds the Script should run: ")) 然后尝试将“Scri

我的代码应该是鼠标左键每“y”秒在屏幕上的一个设置位置舔一次,该位置工作正常:

import pyautogui

def autoclick():
 threading.Timer(0.1, autoclick).start()
 pyautogui.click(1230, 618)
问题在于结束循环

我想问一个时间:

ScriptTime = int(input("Type the time in Seconds the Script should run: "))
然后尝试将“ScripTime”绑定到计数器以结束“autoclick()”

导入时间
t_end=time.time()+1*ScriptTime
当time.time()结束时:
自动单击()
我猜这与“线程”和“时间”模块的使用有关,也与那些通信不好的模块有关。但我昨天开始使用Python,因此非常感谢您的帮助


(在执行过程中没有错误,它只是永远继续,不会停止,而且由于我的鼠标被锁定,在屏幕上单击,我可以X out,也不能使用CTRL+C或ALT+F4,因为在执行过程中我在不同的窗口中。)

我想我明白了为什么它会永远运行下去

在尝试导入
pyautogui
时,为我引发了一个
ImportError
,我确实导入了
threading
模块

以下是threading.timer中的docstring:

Call a function after a specified number of seconds:

t = Timer(30.0, f, args=None, kwargs=None)
t.start()
t.cancel()     # stop the timer's action if it's still waiting
所以问题是(可能)对autoclick函数的一次调用会导致它无限循环该点,而不是在
while
循环中

因此,我建议您将
autoclick
功能替换为:

def click():
    pyautogui.click(1230, 618)

def autoclick():
    threading.Timer(0.1, click).start()
或者这个:

def autoclick():
    threading.Timer(0.1, pyautogui.click, args=(1230, 618))
旁白:您从哪里获得的
pyautogui
模块

无所谓;而且,pip是一个比我意识到的更强大的工具

def autoclick():
    threading.Timer(0.1, pyautogui.click, args=(1230, 618))