python - 停止运行函数并再次调用它
问题描述
我希望 go() 在调用函数 main 时连续运行。当再次调用函数 main 时,我希望 go() 通过停止执行并重新启动它来“重置”。例如:
from threading import Thread
import time
def main():
global run
if run==True:
running=False
run=False
def go():
i=0
global run
run=True
while running:
print(i+=1)
time.sleep(1)
t = Thread(target = go)
running=True
t.start()
run=False
main()
time.sleep(3)
main()
这是代码连续打印 0-infinity 的示例。当再次调用函数 main 时,我想停止执行并从 i=0 重新启动它。但是这个例子不起作用,并且 go() 的两个实例正在运行。(所以每秒有两个 print(i+=1) )
解决方案
尝试这个 :
from threading import Thread
import time
def main(arg = None):
def go():
global run
run=True
while run:
print("running")
time.sleep(1)
global run
if run==True:
run=False
t = arg
t.join()
t = Thread(target = go)
t.start()
return t
run=False
t = main()
time.sleep(3)
main(t)
推荐阅读
- r - 计算特定时间段内的发生次数
- html - 是否可以更改css中的元标记
- typescript - 打字稿生成器:SyntaxError:意外的严格模式保留字
- java - Android内部重用属性
用不同的名字 - r - 我想使用 R 匹配基于任意地址字段的两个数据集
- c# - 使用 React 和 Entity Framework Core 5 Web API 的 CORS 问题
- html - 在 VS Code 中禁用 HTML 中的注释和元素标记之间的自动换行符
- visual-studio-code - 是否可以自动更新 VsCode/PyCharm 机器人框架中资源文件的导入
- java - JPA 和 Spring Boot:来自 DB (H2) 的整数未按预期映射到布尔值
- javascript - 如何限制用户只能从 EasyAutoComplete (jquery) 中列出的选项中进行选择?