#python #python-3.x #multiprocessing #python-multithreading
Вопрос:
Я хочу запустить два потока параллельно (на python3.6), что работает для следующего примера кода:
import threading
from time import sleep
# use Thread to run def in background
# Example:
def func1():
while True:
sleep(1)
print("Working")
def func2():
while True:
sleep(2)
print("Working2")
Thread(target = func1).start()
Thread(target = func2).start()
но это не работает для нарезания резьбы.Нитки:
import threading
from time import sleep
# use Thread to run def in background
# Example:
def func1():
while True:
sleep(1)
print("Working")
def func2():
while True:
sleep(2)
print("Working2")
x = threading.Thread(target=func1())
y = threading.Thread(target=func2())
x.start()
y.start()
Я хотел бы использовать последний вариант, чтобы проверить, живы ли еще x или y.
Ответ №1:
Есть разница между Thread(target = func1)
(первым кодом) и Thread(target=func1())
(вторым кодом):
- первый передает объект функции в
Thread
- второй выполняет функцию (потому что вы вызвали ее с
func1()
помощью ) и передает ее возвращаемое значение вThread
Поскольку вы хотите, чтобы потоки вызывали ваши функции, не вызывайте их:
x = threading.Thread(target=func1)
y = threading.Thread(target=func2)
x.start()
y.start()