Непонятно, почему Python 2.7 implementation из Pool
не имеет метода __exit__()
, который присутствует в Python 3 version этого же класса. Можно ли добавить метод __exit__()
(вместе с __enter__()
, конечно) (я просто хочу использовать with Pool(n) as p:
), или есть особая причина, чтобы избежать его?Почему класс пула при многопроцессорности не имеет метода __exit __() в Python 2?
0
A
ответ
2
Не похоже, что есть какая-то причина, чтобы избежать этого. Глядя на него и быстро проверяя его, он не вызывал какого-либо странного поведения. Это было реализовано в Issue 15064, кажется, что оно не было добавлено в 2.7
(возможно, потому, что учитывались только исправления ошибок).
Возвращение self
из __enter__
и вызова terminate
из __exit__
как это реализовано в Python 3.3 должен быть путь. Вместо изменения источников, хотя (если что было ваше намерение), просто создать пользовательский подкласс:
from multiprocessing.pool import Pool as PoolCls
class CMPool(PoolCls):
def __enter__(self):
return self
def __exit__(self, exc_type, exc_val, exc_tb):
return self.terminate()
Смежные вопросы
- 1. профилирование пула многопроцессорности python
- 2. Профилирование пула многопроцессорности python
- 3. Цель пула в многопроцессорности python
- 4. Ограничение процесса пула многопроцессорности Python
- 5. Карточка пула многопроцессорности Python с несколькими аргументами
- 6. Распределение сил пула многопроцессорности пула процесса
- 7. Система исчерпала память при использовании пула многопроцессорности Python?
- 8. Класс многопроцессорности в подпроцессе
- 9. Почему класс ArrayList не имеет метода newInstance()?
- 10. Почему класс сканера не имеет метода nextChar?
- 11. Номер процесса многопроцессорности Python
- 12. Почему язык Python не имеет метода writeln()?
- 13. Python "с" заявление: __exit __() игнорируется
- 14. Python говорит, что мой класс не имеет метода __call__
- 15. Почему класс C# имеет два метода равных
- 16. Почему класс Integer Java не имеет метода compare()?
- 17. Невозможно вернуть пользовательский объект при использовании метода карты пула Python
- 18. Ошибка для многопроцессорности в Python
- 19. Java: класс не имеет основного метода
- 20. Подпроцессы с жестким ударом при многопроцессорности Python
- 21. Почему __exit используется в программировании модуля ядра?
- 22. Возвращаемое значение из multiprocessing.Queue() при многопроцессорности Python
- 23. Новый класс не имеет метода setItem
- 24. Почему класс kotlin класса не имеет близкого метода?
- 25. «Объект« Module »не имеет атрибута ...» Ошибка многопроцессорности
- 26. Класс не имеет основного метода (Traffic Light)
- 27. Почему str не имеет метода __radd__ в Python?
- 28. Ошибка трассировки многопроцессорности Python
- 29. Возврат в многопроцессорности - Python
- 30. изменение глобальной переменной при многопроцессорности в python
Это именно то, что я имел в виду, чтобы сделать. Спасибо за ссылку на эту проблему. Жаль, что они не добавили метод __exit__ к Py2.7. –