vahnx
vahnx

Reputation: 3

Running Python Threads Simotaneously

I'm looking at running some code to auto-save a game every X minutes but it also has a thread accepting keyboard input. Here's some sample code that I'm trying to get running simultaneously but it appears they run one after the other. How can I get them to run at the same time?

import time
import threading

def countdown(length,delay):
    length += 1
    while length > 0:
        time.sleep(delay)
        length -= 1
        print(length, end=" ")

countdown_thread = threading.Thread(target=countdown(3,2)).start()
countdown_thread2 = threading.Thread(target=countdown(3,1)).start()

Update: Not sure really what the difference python has between a process and a thread (would process show as a second process in Windows?) But here's my updated code. It still runs sequentially and not at the same time.

import time
from threading import Thread
from multiprocessing import Process

def countdown(length,delay):
    length += 1
    while length > 0:
        time.sleep(delay)
        length -= 1
        print(length, end=" ")

p1 = Process(target=countdown(5,0.3))
print ("")
p2 = Process(target=countdown(10,0.1))
print ("")
Thread(target=countdown(5,0.3))
print ("")
Thread(target=countdown(10,0.1))

Upvotes: 0

Views: 40

Answers (2)

dotheM
dotheM

Reputation: 152

AFAIK Threads cant run simultainously.

I suggest you take a look at multiprocessing instead: https://docs.python.org/3/library/multiprocessing.html

Upvotes: -1

ti7
ti7

Reputation: 18806

When you create the threads, they should be created as

Thread(target=countdown, args=(3,2))

As-is, it runs countdown(3,2), and passes the result as the Thread target!

Upvotes: 2

Related Questions