LINUX.ORG.RU

Ответ на: комментарий от AntonI

В том и смысл, вызвать функцию без объявления переменной и взять её из второго треда. Хочу убрать pool из postgresql.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

на момент ВЫЗОВА функции все переменные которые в ней используются должны быть объявлены в теле функции, локальном пространстве имен где функция была объявлена (том же треде) или глобальном пространстве имен.

Ваш Капитан Очевидность.

AntonI ★★★★
()
Последнее исправление: AntonI (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

А ну да, кто мне мешает посмотреть текущий тред из нее. Точно :(

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)
Ответ на: комментарий от steemandlinux

lambda в первом треде ОБЪЯВЛЕНА

Я не вдавался в подробности как это сделано в третьем питоне, во втором объект кода функции (не важно, лямбды/не лямбды) содержит в т.ч. ссылку на локальное пространство имен где она была объявлена.

AntonI ★★★★
()
Ответ на: комментарий от AntonI

Хотя не, вру, в деталях не так - а как забыл. Но смысл такой;-(

У Лутца кажется это разбиралось.

AntonI ★★★★
()
Ответ на: комментарий от steemandlinux

Не суть.

$ def f():
.     print(x)
.
$ def g():
.     x = 1
.     f()
.
$ g()
Traceback (Most recent call last):
1 <xonsh-code> <module> -->
3 <xonsh-code> g -->
2 <xonsh-code> f -->
NameError: name 'x' is not defined

@Antonl, вот так корректнее было.

Функции замыкаются на контексты от их определения. Если бы lookup шел по месту вызова, язык был бы очень наркоманским и неочевидным. Я так однажды сделал, когда игрался с языкостроением, пришлось очень мучительно переделывать.

t184256 ★★★★★
()
Ответ на: комментарий от steemandlinux

Что-то я не пойму, а что тогда за сложную схему вы придумали? Создайте ThreadPool с заданным максимальным количеством потоков и пушьте туда метод в котором происходит запись в бд

Andreezy
()
Ответ на: комментарий от Andreezy

Я так и делаю. Но в этом случае надо держать описание try except finally для потоков. А серийник он работает и работает.

steemandlinux ★★★★★
() автор топика
Последнее исправление: steemandlinux (всего исправлений: 1)

Запомни одну простую вещь, если можно сделать что-то максимально тупо и просто, но ценой большей портянки, то делай именно так.

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

Хитрить будешь когда все будет написано и будет работать.

anonymous
()
Ответ на: комментарий от steemandlinux

Хочу убрать pool из postgresql.

pgbouncer не пробовал? Везде его юзаю.

pi11 ★★★★★
()
Ответ на: комментарий от anonymous

Запомни одну простую вещь, если можно сделать что-то максимально тупо и просто, но ценой большей портянки, то делай именно так.

А можно нам другого Конфуция?

Crocodoom ★★★★★
()
Ответ на: комментарий от t184256

Функции замыкаются на контексты от их определения. Если бы lookup шел по месту вызова

то это был бы макрос:-)

Макросы в питоне я делал, забавно

AntonI ★★★★
()
Ответ на: комментарий от KillTheCat

листал тред в поисках этого сообщения. зачем мешать области видимости и треды - вообще непонятно, это же ортогональные понятия.

cdshines ★★★★★
()
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.