import threading
import time
def someMethod(x):
time.sleep(20)
print(x);
def someMethod2(x):
time.sleep(1)
print(x);
t1 = threading.Thread(name="t1", target=someMethod(1));
t2 = threading.Thread(name="t2", target=someMethod2(2));
t1.start();
t2.start();
Я ожидаю, что результат будет равен 2, а 1, а затем 1, а затем 2. Общее время составляет 21 секунду. Как я могу заставить его работать параллельно, поэтому на выходе 2, а затем на 1, и оба потока работают параллельно, так что общее время составляет 20 единиц?
Вы вызвали функции в основном потоке и передали их возвращаемые значения в качестве точки ввода потока (так как оба они вернули None
, это означало точку ввода no-op), вы фактически не запускали их в отдельных потоках. Вы также дважды вызывали someMethod
и никогда не вызывали someMethod2
. Чтобы исправить, измените на:
t1 = threading.Thread(name="t1", target=someMethod, args=(1,))
t2 = threading.Thread(name="t2", target=someMethod2, args=(2,))
который надлежащим образом передает ссылки на сами функции в качестве точек входа с аргументами, которые должны использоваться, откладывая выполнение до тех пор, пока поток не будет запущен.