当满足要求时,是否还有重用线程的方法

时间:2019-04-06 17:31:57

标签: python multithreading

我正在用Python做一个迷你游戏。这个想法是,当对象在固定距离内靠近播放器时,线程将启动并重复一定次数。

例如:

class RepeatedTimer(object):
    def __init__(self, interval, function, *args, **kwargs):
        self._timer     = None
        self.interval   = interval
        self.function   = function
        self.args       = args
        self.kwargs     = kwargs
        self.is_running = False
        self.start()

    def _run(self):
        self.is_running = False
        self.start()
        self.function(*self.args, **self.kwargs)

    def start(self):
        if not self.is_running:
            self._timer = Timer(self.interval, self._run)
            self._timer.start()
            self.is_running = True

    def stop(self):
        self._timer.cancel()
        self.is_running = False
def ObjectHit(player):
    player.power = player.power + 5


if((Object_A_pos_x == player_pos_x + distance or Object_A_pos_x == player_pos_x - distance) and
   (Object_A_pos_y == player_pos_y + distance or Object_A_pos_y == player_pos_y - distance)):
    tA = RepeatedTimer(10, ObjectHit, player)
    % Thread t starts after every 10 seconds


else:
    t.stop()

我希望许多对象以相同的方式分别影响播放器。例如,对象A靠近玩家23秒,然后对象B出现。所以现在有两个线程,分别是tA和tB。此后,对象A离开,因此线程tA停止,但tB继续运行,直到对象B离开。这些类似地适用于objectC,objectD,...。


我已经阅读了一些有关重用和产生线程的文档,例如ThreadPoolconcurrent.futures。但是,我是多线程的新手,所以我对此不太清楚。


非常感谢您的帮助。

0 个答案:

没有答案