Size: a a a

2020 October 12

p

programmer ⭐️ in SPb Python
Добрый день какой сервер самый лучший для aiogram? Pythonanywhere, heroku не подходят.
источник

D

Dmitry in SPb Python
Добрый день нужна небольшая помощь написал небольшое api которое по запросу выдаёт архив tar с данными
return subprocess.check_output(('cat'), stdin=subprocess.Popen(('tar', '-cf', '-', '-C', coins['{0}'.format(coin)], 'data'), stdout=subprocess.PIPE).stdout)
источник

D

Dmitry in SPb Python
Но проблема в том что делает он это через ОЗУ
источник

D

Dmitry in SPb Python
подскажите способы "застримить сразу в return без пременных"
источник

СФ

Станислав Французов... in SPb Python
Анатоли
подскажите как соединить разные списки

from collections import namedtuple

def merge(*records):
   """
   :param records: (varargs list of namedtuple) The patient details.
   :returns: (namedtuple) named Patient, containing details from all records, in entry order.
   """
   return None
   
PersonalDetails = namedtuple('PersonalDetails', ['date_of_birth'])
personal_details = PersonalDetails(date_of_birth = '06-04-1972')
                                 
Complexion = namedtuple('Complexion', ['eye_color', 'hair_color'])
complexion = Complexion(eye_color = 'Blue', hair_color = 'Black')
 
print(merge(personal_details, complexion))
источник

SK

Sergio Keler in SPb Python
Dmitry
Но проблема в том что делает он это через ОЗУ
а какая разница?
объект в памяти будет, ты вернёшь на него ссылку. копия создаваться не будет ещё одна.
источник

D

Dmitry in SPb Python
Память кончается  я предаю данные +500 гб
источник

SK

Sergio Keler in SPb Python
Dmitry
Добрый день нужна небольшая помощь написал небольшое api которое по запросу выдаёт архив tar с данными
return subprocess.check_output(('cat'), stdin=subprocess.Popen(('tar', '-cf', '-', '-C', coins['{0}'.format(coin)], 'data'), stdout=subprocess.PIPE).stdout)
я ты на твоём месте сделал бы класс iterable и там метод __next__() который отдаёт кусок архива, скажем 4КБ.
получится типа
for part in TarInterable(блабла) :
   что-то(part)
источник

SK

Sergio Keler in SPb Python
TarInterable - это конструктор класса, что тарит.
твой код надо написать в не помню как метод называется, который стартует итератор этот.
источник

SK

Sergio Keler in SPb Python
Дальше открываешь файл как типа proc.stdout.read(размер-куска-в 4К)
источник

SK

Sergio Keler in SPb Python
второй вариант, сделай класс с with, так, чтобы писать:

with myTarSuperOpen(блабла) as tar:
 tar.что-то(как-то)
источник

SK

Sergio Keler in SPb Python
на худой конец, отдай ФАЙЛ по return, а не весь прочитанный stdout тара.
только закрыть не забудь потом
источник

p

pragus in SPb Python
Dmitry
подскажите способы "застримить сразу в return без пременных"
источник

p

pragus in SPb Python
Анатоли
подскажите как соединить разные списки

from collections import namedtuple

def merge(*records):
   """
   :param records: (varargs list of namedtuple) The patient details.
   :returns: (namedtuple) named Patient, containing details from all records, in entry order.
   """
   return None
   
PersonalDetails = namedtuple('PersonalDetails', ['date_of_birth'])
personal_details = PersonalDetails(date_of_birth = '06-04-1972')
                                 
Complexion = namedtuple('Complexion', ['eye_color', 'hair_color'])
complexion = Complexion(eye_color = 'Blue', hair_color = 'Black')
 
print(merge(personal_details, complexion))
тестовое задание что ли?
источник

p

pragus in SPb Python
Sergio Keler
я ты на твоём месте сделал бы класс iterable и там метод __next__() который отдаёт кусок архива, скажем 4КБ.
получится типа
for part in TarInterable(блабла) :
   что-то(part)
а зачем так сложно?
источник

D

Dmitry in SPb Python
Все бы хорошо но изначально у меня не тар и тратить время на его создание нет надо в потоке сразу предать
источник

SK

Sergio Keler in SPb Python
тебе надо экономить память или нет?
источник

SK

Sergio Keler in SPb Python
если пофиг на память, то читай весь тар в неё, как ты делаешь, и это возвращай.
если ты экономишь, то надо читать вывод тара кусками, а это или итератор или with или просто отдать объект типа файл...
источник

p

pragus in SPb Python
Dmitry
Все бы хорошо но изначально у меня не тар и тратить время на его создание нет надо в потоке сразу предать
и всё-таки стоит читать документацию, а не бросаться писать велосипеды.

> If fileobj is given, it is used for reading or writing data.
источник

SK

Sergio Keler in SPb Python
в твоей проге укажи toReturn=....Popen(........, stdout.PIPE)
и верни return toreturn.stdout
источник