#python #django #multithreading
#python #django #многопоточность
Вопрос:
Я создаю функцию, которая создает потоки.
если я вспомню, что функция, выполняющая потоки, должна быть прекращена.
и должны быть созданы новые потоки.
def callme():
t1 = thread(target=somefunction, args=(,))
t2 = thread(target=somefunction, args=(,))
t1.start()
t2.start()
t1.join()
t2.join()
def somefunction():
for i in range(10000000):
print(i)
callme() #callme1
sleep(2)
callme() #callme2
если я вызываю callme1, то через 2 секунды должно быть создано более 2 потоков
, после чего я вызываю callme2, потоки callme1 должны быть уничтожены или остановлены.
и выполняется 2 потока callme2
Я использую какую-то такую технику в Django, если я извлекаю URL, а не некоторые вызовы функций просмотра, которые содержат эти типы структур потоков.
Комментарии:
1. Как есть,
callme
вернется только после остановки обоих потоков. Я не уверен, что вы на самом деле пытаетесь здесь сделать. Можете ли вы показать нам реальный пример из вашего кода Django?2. если кто-то нажмет кнопку из пользовательского интерфейса, он создаст большой файл с помощью thread. для создания этого файла я использую 1 представление. функция просмотра управляет всеми потоками и подобными структурами callme(). если пользователь нажимает несколько раз, функция просмотра также вызывается несколько раз, точно так же, как callme () callme() callme() callme() . я хочу завершить поток, если функция просмотра вызывает.
3. Правильно — это все равно не будет работать в многопроцессорной серверной среде. Если вам нужна надежная система фоновой работы, вам нужно будет изучить, например, rq или celery.