Я пытаюсь обезопасить экземпляр foo
с помощью функции baz
, чтобы перезаписать метод экземпляра foo.bar
. Это работает изначально без участия multiprocessing
.
Работает без multiprocessing
def baz(self, n):
print('Baz' + str(n))
class Foo:
def bar(self):
print('Foobar')
if __name__ == '__main__':
foo = Foo()
foo.bar() # Output: Foobar
foo.bar = baz.__get__(foo)
foo.bar(0) # Output: Baz0
Проблема: Однако, если мы должны были пройти * * * * * * * * * * foo
* * * * * * * * * * * 10 *
AttributeError: у объекта 'Foo' нет атрибута 'baz'
Почему это происходит и как мы можем это решить?
Полный код
import multiprocessing
def baz(self, n):
print('Baz' + str(n))
class Foo:
def bar(self):
print('Foobar')
if __name__ == '__main__':
foo = Foo()
foo.bar() # Output: Foobar
foo.bar = baz.__get__(foo)
foo.bar(0) # Output: Baz0
multiprocessing.Pool(2).map(foo.bar, [1,2,3]) # AttributeError: 'Foo' object has no attribute 'baz'
Использование Python 3.7. 4 на Ма c OS X 10.15.2 Каталина