Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981
собсно пеп про то что объект может дать доступ для этого сценария к специализированной копии
Читать полностью…статус правда деферред. я так понимаю поддержку на уровне tee реализовали, но объявлять как паблик апи не стали
Читать полностью…потому что результат будет сильно зависеть от потрохов итератора
Читать полностью…т.е. у нас до 2.3 копи на итераторах дефакто не работал выходит
Читать полностью…в мултипроцессинге так много подводных камней, что может быть проще явно subprocess
воспользоваться
И да, принт "time to exit" выполняется, но процесс не завершается. Это поведение меня просто в тупик ставит.
Читать полностью…Очередь не имеет ограничений, put не должен блокировать выполнение. На всякий случай пробовал put no wait, нет исключения.
Читать полностью…Всем привет. Столкнулся со странной ситуацией. Читаю json файлы, кладу их в список формата [имя:содержимое]. Обрабатывать их хочу в отдельном процессе.
Пример кода:
def preprocess_rules_process(files: list, preprocessed_queue: multiprocessing.Queue) -> None:
for file in files:
json_file = files[file]
for j in json_file:
if j and 1==1:
preprocessed_queue.put(j)
print("time to exit")
preprocessed_q = multiprocessing.Queue()
prep_p = multiprocessing.Process(target=preprocess_rules_process, args=(files, preprocessed_q))
prep_p.start()
prep_p.join()
print("Done")
привет, подскажите, пожалуйста, может, кто-нибудь видел / знает книги, где на примерах показывается, как реализовать условно интеграции с другими сервисами (разбив на клиент / dto / dao / сервисы) буквально с примерами кода, структуры и т.д., разные кейсы по Saga / Outbox и т.д.
upd: можно и проекты поскидывать
Сап, кто-нибудь в курсе, почему такое:
@dataclass(slots=True)
class CategoryEntity(EntityNameMixin[str]):
parent: "CategoryEntity | None"
@property
def ancestors(self) -> Generator["CategoryEntity"]:
if self.parent:
yield self.parent
yield from self.parent.ancestors
root = CategoryEntity("root", None)
current = root
for i in range(996):
new_cat = CategoryEntity(f"cat_{i}", current)
current = new_cat
recursive_time = timeit.timeit('tuple(current.ancestors)', globals=globals(), number=1000)
print(f"{recursive_time:.5f} сек")
recursive_time = timeit.timeit('tuple(current.ancestors)', globals=globals(), number=1000)
print(f"Повтор: {recursive_time:.5f} сек")
6.05978 сек
Повтор: 5.92232 сек
...
@property
def ancestors(self) -> list["CategoryEntity"]:
if self.parent:
ancestors_list = [self.parent]
ancestors_list.extend(self.parent.ancestors)
return ancestors_list
return []
...
1.39004 сек
Повтор: 1.25104 сек
@lru_cache
(и unsafe_hash=True
в dataclass
-декоратор), с ним:0.42401 секЧитать полностью…
Повтор: 0.29884 сек
Не то чтобы выбор механизма конкурентности прямо сильно от языка зависел. Понятно, что есть нюансы, влияющие на выбор, но концептуально плюс минус пофиг.
Читать полностью…Насколько я понимаю tee просто свой объект с буфером отдает, хотя хз
Читать полностью…To support such “bookmarking”, module itertools, in 2.4, has grown a ‘tee’ function, to be used as:
it, bookmark = itertools.tee(it)
The previous value of ‘it’ must not be used again, which is why this typical usage idiom rebinds the name.
"Given this existing situation, copy.copy(it) on some iterator object isn’t very useful, nor, therefore, is it at all widely used. "
Читать полностью…Понял, огромное спасибо! Буду создавать очереди с помощью менеджера.
Читать полностью…Я просто не стал переносить все условия в пример, чтобы не усложнять его.
Читать полностью…посоветуйте что почитать/посмотреть про тестирование веб приложений
Читать полностью…ньюман микросервисы
но смотря что ты называешь примерами, там прям кода целых сервисов не будет
красава! ещё работу с файловой системой можно вынести в хттп, и будет s3, тоже неблокирующий
Читать полностью…Кстати, звучит как идея. Можно в вычисления запрячь прогу на плюсах, которая будет принимать HTTP-запросы на расчёт, и в питоне спрятать это под IO (await неблокирующийсокет() )
Читать полностью…То у тебя постоянная работа с питоном, поэтому треды будут драться за внутренности интепретатора (читай: gil)
Читать полностью…Ну, чисто для примера:
1. Можно натянуть асинк-интерфейс на вычисление в тредах, тогда мы будем ждать, пока тред не закончит.
2. Можно притащить какого-о другого исполниеля, типа видеокарты и натянуть эти эвейты на ожидание этого исполнителя.
Но на практике непонятно, зачем такое.