
stonepig
11.07.2017
20:26:08
гусь его щипает
не заёбывайте гифками подобными. как минимум - это оффтоп
тут уже нихуя не “жизнь” и не “природа”. собаку привязали на цепь, гусю связали лапы. это очевидное издевательство над теми, у кого мы в гостях

Oleg
11.07.2017
20:28:56
ты гифки до сих пор видишь?

Google

Oleg
11.07.2017
20:28:58
О_о

stonepig
11.07.2017
20:29:02
да

Oleg
11.07.2017
20:29:19
Как-бы поудаляли всё

stonepig
11.07.2017
20:29:42
хз, у меня остались почему-то

Shamil
11.07.2017
20:30:08
sys.getsizeof([i for i in range(1000)])
9024
sys.getsizeof([1 for _ in range(1000)])
9024
почему такой же размер если во втором случае все элементы ссылаются на один и тот же объект

Denis
11.07.2017
20:31:06
Потому что это размер списка ссылок

melancholiac
11.07.2017
20:31:21
потому что 1 это тоже питонообъект
даже литерал

Oleg
11.07.2017
20:31:34
размер(ссылка инт) == размер (инт) ??

melancholiac
11.07.2017
20:31:38
афайк

Denis
11.07.2017
20:31:42
Нет

Google

Oleg
11.07.2017
20:31:56
тогда немного не понял

Denis
11.07.2017
20:32:06
Ссылки везде одинаковые
Инт может быть любого размера
>>> sys.getsizeof(2**10000000)
1333360

Oleg
11.07.2017
20:32:49
аа, я понел
[1, 2, 3, 4] — это ссылки на 1, на 2, на 3... т.е. ссылки
а [1, 1, 1, 1] — это ссылка на 1, ссылка на 1, ссылка на 1
т.е. всё это ссылки
да?

Artem
11.07.2017
20:33:47
>>> sys.getsizeof([0]*1000)
4036
>>> sys.getsizeof([0 for _ in range(1000)])
4516

Oleg
11.07.2017
20:34:10
блэт
сложно
объясните магию)

Igor
11.07.2017
20:34:40
typedef struct {
PyObject_VAR_HEAD
/* Vector of pointers to list elements. list[0] is ob_item[0], etc. */
PyObject **ob_item;
/* ob_item contains space for 'allocated' elements. The number
* currently in use is ob_size.
* Invariants:
* 0 <= ob_size <= allocated
* len(list) == ob_size
* ob_item == NULL implies ob_size == allocated == 0
* list.sort() temporarily sets allocated to -1 to detect mutations.
*
* Items must normally not be NULL, except during construction when
* the list is not yet visible outside the function that builds it.
*/
Py_ssize_t allocated;
} PyListObject;


Artem
11.07.2017
20:36:00
>>> x = []
>>> for i in range(100):
... x.append(i)
... print(sys.getsizeof(x))
...
52
52
52
52
68
68
68
68
100
100
100
100
100
100
100
100
136
136
136
136
136
136
136
136
136
176
176
176
176
176
176
176
176
176
176
220
220
220
220
220
220
220
220
220
220
220
268
268
268
268
268
268
268
268
268
268
268
268
324
324
324
324
324
324
324
324
324
324
324
324
324
324
388
388
388
388
388
388
388
388
388
388
388
388
388
388
388
388
460
460
460
460
460
460
460
460
460
460
460
460
>>>

Denis
11.07.2017
20:36:26
>>> a = [0] * 1000
>>> sys.getsizeof(a)
8064
>>> a.append(0)
>>> sys.getsizeof(a)
9120
>>> a.pop()
0
>>> sys.getsizeof(a)
9120

Tigran
11.07.2017
20:36:26
Типа, первый вариант саллоцировал точно, а второй наращивал оптимальной стратегией?

Oleg
11.07.2017
20:36:26
сколько неясностей...

Artem
11.07.2017
20:36:37
лист кусками растет
да
именно так

Google

Denis
11.07.2017
20:36:46
Почти как std::vector

Artem
11.07.2017
20:36:50
я сам не знал, что первый точно саллоцирует)

Oleg
11.07.2017
20:37:10
а
ээ

Denis
11.07.2017
20:37:53
Сверху он знает, сколько надо памяти, а снизу нет

Oleg
11.07.2017
20:38:11
аа

melancholiac
11.07.2017
20:38:20
и тип салоцировал больше?

Artem
11.07.2017
20:38:33
да

Oleg
11.07.2017
20:38:33
"на всякий случай"

melancholiac
11.07.2017
20:39:28
пример от артема годный
который второй

Igor
11.07.2017
20:54:22
Может кто возился с этим
Кто знает, что значит поле allocated в PyObjectList?

Denis
11.07.2017
20:55:07
Видимо, сколько памяти выделено

Igor
11.07.2017
20:56:08
class PyObject(ctypes.Structure):
_fields_ = [('ob_refcnt', py_ssize_t),
('ob_type', ctypes.c_void_p)]
class ListStruct(PyObject):
_fields_ = [('allocated', ctypes.c_size_t),
('ob_item', ctypes.c_void_p)]
def __repr__(self):
return f'ListStruct(allocated={self.allocated},ob_item={self.ob_item})'
@classmethod
def wrap(cls, obj):
return cls.from_address(id(obj))
a = [0] * 1000
b = [0 for _ in range(1000)]
ListStruct.wrap(a) => 1000
ListStruct.wrap(b) => 1000
In [55]: a.append(1)
In [56]: ListStruct.wrap(a)
Out[56]: ListStruct(allocated=1001,ob_item=140436480158208)

Denis
11.07.2017
20:57:38
А если поп сделать?

melancholiac
11.07.2017
20:58:58

Denis
11.07.2017
20:59:07
В а

Google

Igor
11.07.2017
21:02:05
https://github.com/python/cpython/blob/b879fe82e7e5c3f7673c9a7fa4aad42bd05445d8/Objects/listobject.c#L32
По идее, в allocated должен быть реальный размер массива
Но достать его у меня не получилось(

Admin
ERROR: S client not available

Timofey
11.07.2017
21:07:37
господа. простите за беспокойство. дело в том что в бегиннерах все уже спят.
а у меня вопрос который не дает мне туда отчалить.
и так:
как мне передать регулярку скрипту?
python3 script.py \w+ text.txt

melancholiac
11.07.2017
21:08:19
ты ж в анаконде работаешь?

Zenin
11.07.2017
21:08:20
Такс... кто как и я - несчастный владелец WP?
Венда обновилась и все сломалось. Как неожиданно )

Serj
11.07.2017
21:08:43

Timofey
11.07.2017
21:08:57

Zenin
11.07.2017
21:09:08

melancholiac
11.07.2017
21:09:09
argv?

Zenin
11.07.2017
21:09:33

Timofey
11.07.2017
21:09:40

Serj
11.07.2017
21:09:45

Zenin
11.07.2017
21:09:53
крч я не могу запустить часть приложений, я не могу УДАЛИТЬ даже их.

melancholiac
11.07.2017
21:09:58
и почему это аргв не работает?

Zenin
11.07.2017
21:10:03
черт побери, ось которая не дает удалить проги!!!

melancholiac
11.07.2017
21:10:23

Google

Zenin
11.07.2017
21:10:31
Если кто сталкивался и победил - напишите плз)

Timofey
11.07.2017
21:10:47

Serj
11.07.2017
21:11:00
да. естественно
если ты пилишь программу, а не в образовательных целях, то argv тебе не нужен. тебе нужен argparse

Zenin
11.07.2017
21:11:02
и чего ты ожидал?
Что _как всегда_ все будет не слишком идеально, но нормально. С таким я сталкивался последний раз только при первой установке wp 10

Timofey
11.07.2017
21:11:13

Denis
11.07.2017
21:11:18

Timofey
11.07.2017
21:11:34
беспалезно

melancholiac
11.07.2017
21:11:59
кавычки .-.

Serj
11.07.2017
21:12:00
тебе бы почитать что-нибудь
толку с таких вопросов