Назад к вопросам
Middle+
69
questionbank
Что такое monkey patching в Python?
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
Monkey patching — это динамическое изменение или расширение существующего кода во время выполнения, обычно путем замены методов, функций или атрибутов объектов. Используется для тестирования, отладки, добавления функциональности или исправления ошибок в сторонних библиотеках без изменения их исходного кода. Может привести к проблемам с читаемостью и сложностью отладки.
// Пример monkey patching
import multiprocessing as mp
import time
// Оригинальная функция wait3
def original_wait3(arg):
time.sleep(2)
return arg * 2
// Заглушка для тестирования
def patched_wait3(arg):
print("Patched wait3 called")
return arg * 10 // Изменяем логику
// Monkey patching: заменяем оригинальную функцию
mp.connection.wait3 = patched_wait3
// Создаем процесс, который будет использовать "пропатченную" функцию
def worker(conn):
result = mp.connection.wait3(5)
conn.send(result)
conn.close()
parent_conn, child_conn = mp.Pipe()
p = mp.Process(target=worker, args=(child_conn,))
p.start()
print(f"Result: {parent_conn.recv()}")
p.join()
// Восстановление оригинальной функции (необходимо в реальных сценариях тестирования)
// mp.connection.wait3 = original_wait3