Vladimir
(це не питон)
это бунт? что значит це не питон? тут только питон)
Andrey 😼
УМВР (tm)
Igor
Привет всем.
Подскажите, пожалуйста, в этом сообществе можно публиковать предложения по работе?
Yehor
только если это будет не обычный копипаст, а чтобы было полезно для участников
Vladimir
Vladimir
А почему бы не воспользоваться systemd?
Andrey
есть список пар типа [(1, "1"), (1, "2"), (2, "1"), (3, "2")]
Нужно получить словарь {1: ["1", "2"], 2: ["1"], 3: ["2"]} - есть способ сделать это одним выражением? (zip lambda генератор списков и т.д.)
P
Похоже на собеседование)
P
Я бы попробовал через defaultdict
P
Ещё надо описать поведение в случае с повторениями
Aquinary
Вы объекты класса или какие-либо переменные объявляете в начале функции или только в тот момент, когда начинаете использовать её?
Aquinary
obj1 = Obj1()
obj2 = Obj2()
# что-то делаем с obj1
# что-то делаем ещё
# что-то делаем ещё 2
# что-то делаем с obj2
или
obj1 = Obj1()
# что-то делаем с obj1
# что-то делаем ещё
# что-то делаем ещё 2
obj2 = Obj2()
# что-то делаем с obj2
?
Andrey
Похоже на собеседование)
Не, это просто мне не хочется делать так
r = {}
for k, w in d:
if k not in r:
r[k] = [w]
else:
r[k].append(w)
Здесь еденственная проблема для генератора словаря - в 3 строчке кода - узнать были ли ключи уже добавлены в создаваемый словарь
Andrey
Можно конечно заморочиться с генератором списков, возможно с несколькими for внутри, и обернуть все это потом в dict(), но хотелось бы более красивое решение
Aquinary
Может кто знает конвертер из CSV в dict? Как-то впадлу свой велосипед изобретать
Aquinary
Задача единоразовая
P
Настолько единоразовая, что проще написать самому
Andrey
P
Andrey
Я и не просил оптимальное решение) мне просто интересно можно ли это реализовать в 1 пусть сложное выражение
Andrey
проблема опять же в проверке есть ли уже ключ при добавлении
adel
@terehinAV Можно функцию написать проверки наличия в массиве, но не знаю, считается ли это уже подходящим для вас.
Andrey
если это нельзя сделать в 1 строку то это не лучше цикла for) возможно это вообще нельзя реализовать в 1 строку. задачка на интерес, это не из задач собеседований еще раз повторюсь.
Aquinary
XY?)))))
Anonymous
Питонисты, а дайте пару советов по телеграмм боту. Допустим, мне нужно делать какие-то вещи шаг за шагом. Типа введи имя, фамилию, адрес и номер телефона. Все это оказывается можно сделать только с помощью converstation хендлера, разбросав код по разным функциям, поскольку мы имеем дело со state machine, то никак ли нельзя это обойти, чтобы ожидания ввода в одной функции не блокировало всю программу?
Alex
Alex
там встроенный FSM
Alex
Anonymous
Anonymous
там есть встроенный вроде как.
Или может реально забить и сделать все через converstation handler, просто это реально немного неудобно. Считай тебе нужно сделать стопицот функций, чтобы просто данные у пользователя забрать из инпута.
Alex
Anonymous
Alex
гугли threading.Event
Anonymous
https://pastebin.com/mKz8Rwpv
Alex
https://pastebin.com/mKz8Rwpv
можно упороться сильнее.
пишешь функцию, которая лочит поток и дальше с отдельного хэндлера лови следующее сообщение, дергай event.set(), чем разблокируешь ранее забокированный поток и оттуда же можно вернуть новое полученное сообщение.
Anonymous
Alex
Anonymous
Alex
если нет, юзай тот ConversationHandler что там есть
Anonymous
Anonymous
В гайдах для питона про это же есть, наверняка?
Alex
если у тебя бот на начаьной стадии разработки и ничего толком нет, бери aiogram
Alex
Alex
Anonymous
Ладно ,пошел читать про threading в питоне :)
Anonymous
Спасибо огромное за напутствие
Aleksandr
Иа
adel
Если пользователь останавливает поток для дальнейшего запуска, то в оперативной памяти останется процесс? @JRootJunior
Chebyrash
adel
Chebyrash
Thread не создаёт новый процесс
Митяй 🐲 Митяй
девушка-питон
😍
Chebyrash
Митяй 🐲 Митяй
?
Да вон выше чатик почитал там где аудио сообщения :)
Митяй 🐲 Митяй
Chebyrash
сЭрвис
Митяй 🐲 Митяй
всем привет, тут есть те, кто работал с pika и rabbitmq?
Митяй 🐲 Митяй
)
Митяй 🐲 Митяй
сЭрвис
всё верно, а ты чо сервис говориш)?
Chebyrash
Митяй 🐲 Митяй
ну хо тя да, service сервайс :)
Митяй 🐲 Митяй
но не сэрвайс)
Митяй 🐲 Митяй
но в винде сЭрвисы! :)
λ
Лол, это обычная "русификация" англ слов. Ничего нового для СНГ.
λ
Во первых так привычней уху, а во вторых начнутся срачи "ой вые.. своим английским".
Anonymous
# -*- coding: utf-8 -*-
import csv
import sys
FILENAME = "users.csv"
users = [
["Tom", 28],
["Alice", 23],
["Bob", 34]
]
with open(FILENAME, "w", newline="") as file:
writer = csv.writer(file, delimiter='\n')
writer.writerows(users)
with open(FILENAME, "a", newline="") as file:
user = ["Sam", 31]
writer = csv.writer(file)
writer.writerow(users)
# считываем сообщения из файла
print("Считанные сообщения")
with open(FILENAME, "rb") as file:
for message in file:
print(message, end="")
Anonymous
help me
P
а можно вкратце описать суть проблемы?)
P
но сразу порекомендовал бы file отовсюду заменить на иные названия, потому что это немного другая вещь
Chebyrash
help me
Проблему хоть опишите )
Aquinary
MrSmith
for i in range(4):
name = "Thread #%s" % (i + 1)
th = threading.Thread(name=name, target=lambda: (
mutex1.acquire()
try:
tmp = m
m += 1
finally:
mutex1.release()
mutex2.acquire()
try:
summ += some(10, tmp)
finally:
mutex2.realeasre()
))
th.run()
MrSmith
Пасаны чет не робит
MrSmith
adel
Два процесса будут идти одновременно, разве это не больше памяти займёт?
MrSmith
MrSmith
Ты смешал