ru_python_beginners | Unsorted

Telegram-канал ru_python_beginners - Python beginners

14447

Вопросы про Python для чайников. Cпам и троллинг неприемлем. Частозадаваемые вопросы: https://github.com/ru-python-beginners/faq/blob/master/README.md Правила группы: https://t.me/ru_python_beginners/1649981

Subscribe to a channel

Python beginners

собсно пеп про то что объект может дать доступ для этого сценария к специализированной копии

Читать полностью…

Python beginners

статус правда деферред. я так понимаю поддержку на уровне tee реализовали, но объявлять как паблик апи не стали

Читать полностью…

Python beginners

потому что результат будет сильно зависеть от потрохов итератора

Читать полностью…

Python beginners

т.е. у нас до 2.3 копи на итераторах дефакто не работал выходит

Читать полностью…

Python beginners

в мултипроцессинге так много подводных камней, что может быть проще явно subprocess воспользоваться

Читать полностью…

Python beginners

И да, принт "time to exit" выполняется, но процесс не завершается. Это поведение меня просто в тупик ставит.

Читать полностью…

Python beginners

Очередь не имеет ограничений, put не должен блокировать выполнение. На всякий случай пробовал put no wait, нет исключения.

Читать полностью…

Python beginners

Всем привет. Столкнулся со странной ситуацией. Читаю 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")


Проблема в том, что процесс не завершается, если я использую queue.put(). Заменяю на любое другое действие, и процесс завершается правильно. С put() join ждёт бесконечно. Есть предположения, почему так происходит?

Читать полностью…

Python beginners

привет, подскажите, пожалуйста, может, кто-нибудь видел / знает книги, где на примерах показывается, как реализовать условно интеграции с другими сервисами (разбив на клиент / dto / dao / сервисы) буквально с примерами кода, структуры и т.д., разные кейсы по Saga / Outbox и т.д.


upd: можно и проекты поскидывать

Читать полностью…

Python beginners

Падает, а как ты узнал?)

Читать полностью…

Python beginners

Сап, кто-нибудь в курсе, почему такое:

@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_cacheunsafe_hash=True в dataclass-декоратор), с ним:
0.42401 сек
Повтор: 0.29884 сек

Читать полностью…

Python beginners

Пахнет совой и глобусами, но в целом да.

Читать полностью…

Python beginners

Пахнет микросервисами...

Читать полностью…

Python beginners

Не то чтобы выбор механизма конкурентности прямо сильно от языка зависел. Понятно, что есть нюансы, влияющие на выбор, но концептуально плюс минус пофиг.

Читать полностью…

Python beginners

(Кого я обманываю, под CPU-bound есть плюсы)

Читать полностью…

Python beginners

Насколько я понимаю tee просто свой объект с буфером отдает, хотя хз

Читать полностью…

Python beginners

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.

Читать полностью…

Python beginners

"Given this existing situation, copy.copy(it) on some iterator object isn’t very useful, nor, therefore, is it at all widely used. "

Читать полностью…

Python beginners

Почему бы не взять concurrent.futures сразу

Читать полностью…

Python beginners

Понял, огромное спасибо! Буду создавать очереди с помощью менеджера.

Читать полностью…

Python beginners

Я просто не стал переносить все условия в пример, чтобы не усложнять его.

Читать полностью…

Python beginners

посоветуйте что почитать/посмотреть про тестирование веб приложений

Читать полностью…

Python beginners

ньюман микросервисы
но смотря что ты называешь примерами, там прям кода целых сервисов не будет

Читать полностью…

Python beginners

Я забыл убрать setrecursionlimit(1_000_000)

Читать полностью…

Python beginners

А второе точно не падает по рекурсии?

Читать полностью…

Python beginners

поздравляю, вы изобрели RPC

Читать полностью…

Python beginners

красава! ещё работу с файловой системой можно вынести в хттп, и будет s3, тоже неблокирующий

Читать полностью…

Python beginners

Кстати, звучит как идея. Можно в вычисления запрячь прогу на плюсах, которая будет принимать HTTP-запросы на расчёт, и в питоне спрятать это под IO (await неблокирующийсокет() )

Читать полностью…

Python beginners

То у тебя постоянная работа с питоном, поэтому треды будут драться за внутренности интепретатора (читай: gil)

Читать полностью…

Python beginners

Ну, чисто для примера:
1. Можно натянуть асинк-интерфейс на вычисление в тредах, тогда мы будем ждать, пока тред не закончит.
2. Можно притащить какого-о другого исполниеля, типа видеокарты и натянуть эти эвейты на ожидание этого исполнителя.

Но на практике непонятно, зачем такое.

Читать полностью…
Subscribe to a channel