Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
menu search
person
Welcome To Ask or Share your Answers For Others

Categories

I'm attempting to make a script that keeps the times of each boss in a game through text.

an example would be:

if line == 'boss1 down':
    print('boss1 timer set for 10 seconds')
    time.sleep(10)
    print("boss1 due")

if line == 'boss2 down':
    print('boss2 timer set for 15 seconds')
    time.sleep(15)
    print("boss2 due")

However, the clear issue is that only one boss can be timed at a time. Is there a function I can use that won't disrupt the code and allow me to time multiple at a given time?


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
693 views
Welcome To Ask or Share your Answers For Others

1 Answer

You can use the Thread class from the built-in threading module:

from threading import Thread
import time

def timer(num, secs, line):
    if line == f'boss{num} down':
        print(f'boss{num} timer set for {secs} seconds ')
        time.sleep(secs)
        print(f"boss{num} due")

boss1 = Thread(target=timer, args=(1, 10, "boss1 down"))
boss2 = Thread(target=timer, args=(2, 15, "boss2 down"))

boss1.start()
boss2.start()

Output:

boss1 timer set for 10 seconds boss2 timer set for 15 seconds

boss1 due
boss2 due

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
thumb_up_alt 0 like thumb_down_alt 0 dislike
Welcome to ShenZhenJia Knowledge Sharing Community for programmer and developer-Open, Learning and Share
...