gpt4 book ai didi

Python 线程 - 如何在单独的线程中重复执行一个函数?

转载 作者:行者123 更新时间:2023-12-01 22:10:48 25 4
gpt4 key购买 nike

我有这个代码:

import threading
def printit():
print ("Hello, World!")
threading.Timer(1.0, printit).start()
threading.Timer(1.0, printit).start()

我正在尝试“Hello, World!”每秒打印一次,但是当我运行代码时没有任何反应,进程只是保持事件状态。

我读过一些帖子,其中正是这段代码对人们有用。

我对在 python 中设置适当的间隔有多么困难感到非常困惑,因为我已经习惯了 JavaScript。我觉得我错过了什么。

感谢您的帮助。

最佳答案

我认为您当前的方法没有任何问题。它在 Python 2.7 和 3.4.5 中都对我有用。

import threading

def printit():
print ("Hello, World!")
# threading.Timer(1.0, printit).start()
# ^ why you need this? However it works with it too

threading.Timer(1.0, printit).start()

打印:

Hello, World!
Hello, World!

但我建议以以下方式启动线程:

thread = threading.Timer(1.0, printit)
thread.start()

这样你就可以停止线程:

thread.cancel()

没有对象Timer类,你将不得不关闭你的解释器以停止线程。


替代方法:

我个人更喜欢通过扩展 Thread 来编写计时器线程分类为:

from threading import Thread, Event

class MyThread(Thread):
def __init__(self, event):
Thread.__init__(self)
self.stopped = event

def run(self):
while not self.stopped.wait(0.5):
print("Thread is running..")

然后用 Event 的对象启动线程分类为:

my_event = Event()
thread = MyThread(my_event)
thread.start()

您将开始在屏幕上看到以下输出:

Thread is running..
Thread is running..
Thread is running..
Thread is running..

要停止线程,执行:

my_event.set()

这为将来修改更改提供了更大的灵 active 。

关于Python 线程 - 如何在单独的线程中重复执行一个函数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48049861/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com