Есть ли способ сделать в Python отменяемую функцию вне потока? ⇐ Python

Программы на Python
Anonymous
Есть ли способ сделать в Python отменяемую функцию вне потока?

Сообщение Anonymous »

У меня возникли большие проблемы с попыткой создать функцию, которая действует как входные данные при вызове в потоке и может быть отменена в любой момент. Эта функция по-прежнему будет возвращать значение при вызове с использованием потока. Я провел небольшое тестирование модуля, у которого нет входного вызова.
Я попробовал использовать модуль multiprocessing, но столкнулся с несколькими проблемами:
  • Если бы я использовал multiprocessing.Process, его можно было бы завершить, но я не смог бы получить результат.
  • Если бы я использовал multiprocessing.pool, он вернул бы значение, но я не смог найти способ завершить его.
Есть ли способ объединить процесс и пул, чтобы он работал? Я мало работал с многопроцессорной обработкой, и мне нужно руководство по полной реализации описанных выше методов.
Вот мой нефункциональный код:

Код: Выделить всё

import time

def foo(bar, baz):
time.sleep(1)
print('hello {0}'.format(bar))
return 'foo'+baz

from multiprocessing.pool import ThreadPool
pool = ThreadPool(processes=1)

async_result = pool.apply_async(foo, ('world', 'foo'))

return_val = async_result.get() # Tried to execute as a thread
time.sleep(0.5)
pool.terminate()

print(return_val)
Мой код был адаптирован из этого поста.


Подробнее здесь: https://stackoverflow.com/questions/790 ... -in-python

Вернуться в «Python»