У меня бесконечный цикл, выполняющий async, но я не могу его прекратить. Ниже приведена аналогичная версия моего кода:Python Multiprocessing Async не может завершить процесс
from multiprocessing import Pool
test_pool = Pool(processes=1)
self.button1.clicked.connect(self.starter)
self.button2.clicked.connect(self.stopper)
def starter(self):
global test_pool
test_pool.apply_async(self.automatizer)
def automatizer(self):
i = 0
while i != 0 :
self.job1()
# safe stop point
self.job2()
# safe stop point
self.job3()
# safe stop point
def job1(self):
# doing some stuff
def job2(self):
# doing some stuff
def job3(self):
# doing some stuff
def stopper(self):
global test_pool
test_pool.terminate()
Проблема с концом() внутри функции остановки не работает. Я попытался поместить terminate() внутри job1, job2, job3 функции все еще не работают, попытался положить конец цикла в стартовой функции, снова не работая. Как я могу остановить этот асинхронный процесс?
Хотя остановка процесса в любое время является достаточно хорошей, можно ли остановить ее в точках, которые я хочу? Я имею в виду, что если команда завершения (не уверенная о том, какая команда) предназначена для обработки, я хочу, чтобы она выполнила шаги к маркеру «# безопасной остановки», а затем завершала процесс.
Это кажется странным: 'i = 0', за которым следует' while i! = 0: 'Поскольку i установлен на ноль, оператор while никогда не будет петли –
Укажите фактический код, который вы используете. Вы опубликовали * не * действительную программу python. – Bakuriu
Вам не нужен пул для запуска одной задачи; достаточно «процесса». –