вы, похоже, не понимаете, что делает эта строка: t = threading.Thread(target=whatever(i))
, удаление скобок не означает просто не ждать, пока поток завершит свою работу, так что вы можете запустить функцию в отдельном потоке:
target
должен быть самим объектом функции, но когда вы делаете t = threading.Thread(target=whatever(1))
, target
будет возвращать значение whatever
, которое вы уже выполнили в исходном потоке, вам нужно датьthreading
сама функция затем определяет параметры отдельно, и она будет вызывать ее для вас так:
from time import sleep
import threading
def whatever(i):
sleep(5)
print("Hey! It's me number " + str(i))
for i in range(3):
t = threading.Thread(target=whatever, args=(i,))
t.start()