
Nobue
20.08.2016
09:28:18
интересный подход

Zart
20.08.2016
09:28:22
асинк пока не трогал, но он будет 3.4+ если не 3.5+
впрочем есть и альтернативы

Nobue
20.08.2016
09:28:40
но наверное это тебя ограничивает не юзать новые вещи в третьем ?

Google

Zart
20.08.2016
09:28:54
https://pypi.python.org/pypi/trollius
в целом да

Nobue
20.08.2016
09:29:27
а ты это делаешь с какой-то целью особой?

Zart
20.08.2016
09:29:30
нельзя использовать ексепшен чейнинг, аннотации

Nobue
20.08.2016
09:29:43
ну то есть зачем такой совместимый код вообще на практике нужен

Zart
20.08.2016
09:29:45
мне просто хочется чтобы работало где попало

Nobue
20.08.2016
09:29:55
понятно)

Zart
20.08.2016
09:30:17
если сильно выебнуться, можно писать 2.4-3.5 совместимый код...
но это будет очень... хуёво

Nobue
20.08.2016
09:30:34
не надо, я пробовал писать на 2.4 и мне не понравилось
совсем :D

Zart
20.08.2016
09:30:47
я начинал с 2.4 и 2.5, не вижу ничего страшного

Nobue
20.08.2016
09:31:03
тогда наверное да, если ты человек привычный

Google

Nobue
20.08.2016
09:31:08
я начал с 2.6 кажется

Zart
20.08.2016
09:31:13
просто некоторые привычные вещи там или не работают, или придётся через жопу переписывать чтобы получить совместимость
самый яркий пример - исключения
with нет
поиска подстрок в строке через in нет
синтаксис исключений другой
импорты относительные по дефолту (это очень больно, когда кусает за анус)

Nobue
20.08.2016
09:32:47
мне там нужен был для задачи SQLite и он оказался в 2.4 удивительно сломанным и постоянно падал с локами в неожиданных местах, ещё были проблемы с тредами (уже точно не помню какие) ну и по мелочи в 2.4 довольно много привычного синтаксиса нет
точно вот с импортами я тоже сталкивался

Zart
20.08.2016
09:33:21
я причем сейчас левых пакаджей даже не касаюсь, а это тоже боль

Nobue
20.08.2016
09:33:53
мы даже бэкпортили какие-то куски стандартной библиотеки из 2.6 потому что в 2.4 они были с багами

Zart
20.08.2016
09:34:30
ОрдередДикт долгое время был в условных пререках ряда пакаджей
стандартный юниттест сильно улучшили в 2.7
2.6 в пролёте, ему надо отдельно бакпорт накатывать
да и вообще, я насмотрелся в своё время на новичков, с "мне сказали что для запуска скрипта, что я скачал с инета, нужен питон. пошел, скачал последний, а оно ошибки сыпет"

Sergey
20.08.2016
09:45:28
Причем работает лучше, чем на ранних 3.4
Потому что в рамках 3.4 там очень много изменений по async

Andrey
20.08.2016
09:46:56

Zart
20.08.2016
09:47:17
ну вон есть троллиус, с таким же асинком, но на 2.7

Sergey
20.08.2016
09:47:23

Zart
20.08.2016
09:48:06
https://pypi.python.org/pypi/pysqlite всё еще жив, хотя и входит в стдлиб гдето с 2.4 питона

Sergey
20.08.2016
09:48:24

Zart
20.08.2016
09:48:44
ну я не касаюсь разницы в функционале и скорости

Google

Zart
20.08.2016
09:49:01
первые тройки были заметно медленнее 2.7

Sergey
20.08.2016
09:49:22
На строках и текущие тройки заметно медленнее

Zart
20.08.2016
09:49:25
в итоге в тройку запилили новый гил, а в 2.7 не завезли =_=
зато в модных тройках теперь нет разницы в ширине, а это сцуко охуенно

Sergey
20.08.2016
09:50:16
В ширине чего?

Zart
20.08.2016
09:50:21
юникода

Sergey
20.08.2016
09:50:27
А
Вот, кстати, есть нормальный способ приоретизировать пакет из sites над стандартной библиотекой? Без правки PYTHONPATH в скрипте.

Zart
20.08.2016
09:57:35
во-первых единственный способ получить пакет первым - это чтобы он был раньше на sys.path
а вот добиться этого можно кучей способов
все эти виртуаленвы и иже с ним и занимаются тем, что наёбывают питон в модификацию сис.патха
если ты не хочешь/не можешь модифицировать некий скрипт, есть еще пачка способов


Zart
20.08.2016
09:59:26
D:\>py -msite
sys.path = [
'D:\\',
'C:\\WINDOWS\\SYSTEM32\\python27.zip',
'C:\\Program Files (x86)\\Python 2.7\\DLLs',
'C:\\Program Files (x86)\\Python 2.7\\lib',
'C:\\Program Files (x86)\\Python 2.7\\lib\\plat-win',
'C:\\Program Files (x86)\\Python 2.7\\lib\\lib-tk',
'C:\\Program Files (x86)\\Python 2.7',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\win32',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\win32\\lib',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\Pythonwin',
]
USER_BASE: 'C:\\Users\\Zart\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\Zart\\AppData\\Roaming\\Python\\Python27\\site-packages' (doesn't exist)
ENABLE_USER_SITE: True
D:\>set PYTHONPATH=d:\custom
D:\>py -msite
sys.path = [
'D:\\',
'd:\\custom',
'C:\\WINDOWS\\SYSTEM32\\python27.zip',
'C:\\Program Files (x86)\\Python 2.7\\DLLs',
'C:\\Program Files (x86)\\Python 2.7\\lib',
'C:\\Program Files (x86)\\Python 2.7\\lib\\plat-win',
'C:\\Program Files (x86)\\Python 2.7\\lib\\lib-tk',
'C:\\Program Files (x86)\\Python 2.7',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\win32',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\win32\\lib',
'C:\\Program Files (x86)\\Python 2.7\\lib\\site-packages\\Pythonwin',
]
USER_BASE: 'C:\\Users\\Zart\\AppData\\Roaming\\Python' (doesn't exist)
USER_SITE: 'C:\\Users\\Zart\\AppData\\Roaming\\Python\\Python27\\site-packages' (doesn't exist)
ENABLE_USER_SITE: True
в общем несколько способов навскидку:
1) задать PYTHONPATH переменную
2) создать usersite.py
3) модифицировать site.py
4) написать hack.pth с модификацией пути
5) написать свой пакадж лоадер и запхать его в мету
6) сделать копию питона (виртуаленв) и сунуть код в либ


Nobue
20.08.2016
10:02:33
Зарт, а в чем коренное отличие гила в третьем и втором?

Zart
20.08.2016
10:02:45
билдаут создает свои врапперы где задает sys.path принудительно
в тройке новый гил запилили

Nobue
20.08.2016
10:03:08
ну я имею в виду на практике :)

Zart
20.08.2016
10:03:18
который йелдит контроль не по количеству выполненных байт код инструкций, как в двойке
а по времени

Nobue
20.08.2016
10:03:31
круто

Google

Zart
20.08.2016
10:03:31
это даёт охуенный буст для ио-баунд

Nobue
20.08.2016
10:03:39
это очень хорошо

Zart
20.08.2016
10:03:53
www.dabeaz.com/python/NewGIL.pdf must read
там прекрасно иллюстрирована проблема и как новый гил её решает

Sergey
20.08.2016
10:04:30

Nobue
20.08.2016
10:04:59
спасибо за ссылку)

53r63rn4r
20.08.2016
10:05:01

Zart
20.08.2016
10:05:21
поправка - это не столько на иобаунд влияет, сколько на то, как цпу-баунд мешают иобаунд тредам

53r63rn4r
20.08.2016
10:05:45
Да, версии питона - тот еще жук, тот модуль естьна той версии, на другую не перенесли

Zart
20.08.2016
10:05:48

Admin
ERROR: S client not available

Nobue
20.08.2016
10:05:51
Гил и его проблемы во втором я уже успел досконально изучить, а вот в третьем пока не смотрел

53r63rn4r
20.08.2016
10:07:04
Над тем, что это жизненно

Zart
20.08.2016
10:07:09

53r63rn4r
20.08.2016
10:07:10
Ибо с этим сталкивался

Nobue
20.08.2016
10:07:21

Zart
20.08.2016
10:07:29
ПРЯМЩАЗ

Nobue
20.08.2016
10:07:38
:D

Zart
20.08.2016
10:07:51
это по сути презентация, где каждый слайд в виде странички пдф... читается минут за 5

Google

Nobue
20.08.2016
10:08:06
пойду и правда почитаю прямо сейчас

Zart
20.08.2016
10:08:32
заодно зацени как новый гил влияет на строго однопоточные программы

Sergey
20.08.2016
10:10:40

Zart
20.08.2016
10:11:26
ну и пускай имеет
www.dabeaz.com/python/UnderstandingGIL.pdf в этой пдфке уже более подробно, с примерами байткодов и сишных исходников и анализом поведения

53r63rn4r
20.08.2016
10:13:11
Где пдфка? Кому отсасывать?

Zart
20.08.2016
10:13:21

53r63rn4r
20.08.2016
10:14:27
Спс

Zart
20.08.2016
10:16:57
чота я слегка наврал всё же. в общем новый гил сильно помогает шедулингу цпубаунд тредов
но увеличивает время отклика для ио баунд тредов, так как смена контекста происходит реже. и похоже что позволяет создать конвой эффект. не знаю починили ли это позже
в любом случае матан на чистом питоне не параллелится ни в старом ни в новом
http://bugs.python.org/issue7946 всё еще open с low priority
там крайне интересные циферки для патча с приоритетами

Janek
20.08.2016
10:35:19
Хаюшки

Denis
20.08.2016
10:37:10
Ку

Sergey
20.08.2016
10:41:25

Zart
20.08.2016
10:45:11
шо ж ты такое пилишь что тебе это важно?

Nobue
20.08.2016
10:51:02
Зарт, а не было ли бэкпортов нового GIL в 2.7?
и ещё мне интересно можно ли проверить насколько значимы тормоза вызываемые проблемами старого GIL в конкретной программе без переписывания её на Python 3

Andrey
20.08.2016
10:54:14
То, что программа работать по-дургому будет - бее

Nobue
20.08.2016
10:54:34
просто если да (и проверка это подтвердит), то я бы некоторые вещи переписал, а если нет, то это будет слишком затратное мероприятие

Andrey
20.08.2016
10:55:05
Эта группа больше не существует