想象一下以下课程:
Class Object(threading.Thread):
# some initialisation blabla
def run(self):
while True:
# do something
sleep(1)
class Checker():
def check_if_thread_is_alive(self):
o = Object()
o.start()
while True:
if not o.is_alive():
o.start()
我想重新启动线程以防万一。这不起作用。因为线程只能启动一次。第一个问题。为什么是这样?
据我所知,我必须重新创建的每个实例Object
并调用start()
以再次启动线程。如果是Object
s,这不是很实际。我必须读取旧值的当前值Object
,创建一个新值,并使用旧值在新对象中设置参数。第二个问题:这可以用更聪明,更轻松的方式完成吗?
之所以以这种方式实现threading.Thread,是为了保持线程对象与操作系统线程之间的对应关系。在主要的操作系统中,无法重新启动线程,但是您可以
使用另一个线程id 创建另一个线程。
如果重新创建是一个问题,则无需从threading.Thread继承类,只需将目标参数传递给Thread的构造函数,如下所示:
class MyObj(object):
def __init__(self):
self.thread = threading.Thread(target=self.run)
def run(self):
...
然后,您可以访问线程成员以控制线程执行,并根据需要重新创建它。不需要MyObj娱乐。
问题内容: 我试图编写一个文件监视器,它将检查文件是否添加了新行,该监视器实际上是一个线程,它将始终由randomaccessfile读取该行。 这是监视器的核心代码: 这是一些帮助类: 这是调用监视器的示例: 现在,我的问题是,如果我仅调用以下代码,代码就可以很好地工作: 这将监视文件的行追加,并通知侦听器。 但是,当我致电: 这意味着我想监视另一个文件而不是之前。 因此,在Monitor中,我
我想知道为什么你能做到 不需要这样创建实例 有没有可能创建一个不需要实例的类?如果你能创建一个这样的类,你会怎么做?我在寻找类似 而不是必须这样做
我试图使应用程序在反应本机(不是与博览会,我创建了我的代码与反应本机init和运行与反应本机run-android),当我在代码中做出改变,他们并不总是考虑到:考虑到他们我有重新启动计算机。 我一天要做几次,很费时。我已经测试过从设备上删除应用程序测试,以使Thread缓存干净,但它不起作用,唯一起作用的是重新启动(如果它起作用的话,我使用的是Mac)。 是否有一个命令可以让我重置我不知道的缓存并
在WPF应用程序中,我有一个线程池(每个线程都是对返回base 64映像的REST webservice的调用),我想精确地“控制”这些线程。 这些线程是异步的,我希望能够暂停/恢复它们中的每一个。 > < li> 我想使用CancellationToken之类的东西不是一个选项,因为每个线程都只是进行一次调用并等待响应。 我只是在课堂线程中看到的= 如果有人有什么建议呢? 提前谢谢。
问题内容: 我正在尝试为我的Java游戏添加重启/重播功能。当前在我的Game类(GUI和游戏被初始化的地方)中,我有: 游戏对象包含整个游戏窗口的GUI,并包含各种对象(例如实际游戏窗口,计分板,倒数计时器等)。 我想添加一个功能,如果他们单击GUI上的重新启动按钮或游戏结束后,游戏将重新启动(以及倒计时和计分)。我确实意识到最好重新实例化对象(计分,倒数),但是一旦实例化,它们便成为我的GUI
我通常通过安装pycharm,但我犯的错误是在下载文件夹中包含pycharm目录时执行。 我后来将目录移动到。这导致曾经运行的unity启动器(最初安装PyCharm时添加的)每次尝试使用时都会失败(如预期的那样)。 如何从Unity启动器中重新添加作为一个可使用的应用程序?我知道文件的位置。我试图将其添加到,但这并不能改变任何事情。 我仍然可以通过启动pycharm。但这很乏味。 我已尝试使用以