@ru_python

Страница 5840 из 9768
Vladimir
06.07.2018
13:01:13
Всем добрый день! Пишу для программы GUI на tkinter-e суть в том что когда я нажимаю на кнопку из другого модуля вызывается функция в которой есть цикл, как мне при каждой итерации цикла перекидывать значение в модуль гуя? У меня там идет прогресс бар чтобы было видно что процесс исполняется. Код переносить в модуль гуя не предлагайте, генераторы тоже, поскольку кода уже много, буду всем благодарен за совет

Водитель НЛО
06.07.2018
13:04:54
Дротути. Сколько памяти должно быть доступно 32битному питону? У меня вылетает когда разжирается до 1,8гб, MemoryError

Google
Yurij
06.07.2018
13:06:15
Водитель НЛО
06.07.2018
13:06:55
Вот как раз на Винде 32 2г. Это предел. В линуксе может получить честные 4г
А у 64бит есть порог или сможет и 64гб утилизировать?

Aragaer
06.07.2018
13:07:32
в линуксе 1 гиг из 4 занимает ядро

cookie
06.07.2018
13:07:33
пусть твоя функция принимает коллбек и вызывает его каждую итерацию
Блин, гдеж ты раньше был, когда я ткинтер пытался... Киви оказался удобнее в итоге

Aragaer
06.07.2018
13:07:35
так что 3 8)

Eldar
06.07.2018
13:09:21
А у 64бит есть порог или сможет и 64гб утилизировать?
Щас в процах 48 битная адресация т.е 34 Тб оперы поддерживается

Tigran
06.07.2018
13:09:24
Это когда yeld?
когда угодно, когда тебе может потребоваться обновить прогресс бар

Makc
06.07.2018
13:09:29
Vladimir
06.07.2018
13:11:00
Google
Vladimir
06.07.2018
13:11:34
Водитель НЛО
06.07.2018
13:11:41
Спасибо, товарищи, чекну библиотеки и подниму вопрос переезда на 64битный питон.

Vladimir
06.07.2018
13:11:48
Это когда yeld?
Это генератор

Придется переписывать уйму кода

Чтобы все скинуть на них

Плюс у меня цикл с условиями

Так что это не

Tigran
06.07.2018
13:13:30
Можно пожалуйста простой пример?
def my_heavy_computations(callback): for i, something in enumerate(somelist): callback(i * 100 / len(somelist)) # do work def button_click(): def update_progress_bar(percent): my_progress_bar.set_value(percent) do_heavy_computations(update_progress_bar)

Vladimir
06.07.2018
13:14:20
Огромное спасибо!

Это то что нужно!)

Yurij
06.07.2018
13:17:20
Придется переписывать уйму кода
Нехорошо, но тоже сработает если вот так: https://stackoverflow.com/questions/423379/using-global-variables-in-a-function

Да, но сроки.?

Vladimir
06.07.2018
13:21:52
Нехорошо, но тоже сработает если вот так: https://stackoverflow.com/questions/423379/using-global-variables-in-a-function
Глобальные переменные в пределах одного модуля глобальны, а у меня вызовы из разных

Tishka17
06.07.2018
13:23:39
вот и отлично

[̲̅i̲̅t̲̅j̲̅u̲̅n̲̅k̲̅y̲̅] ࢧ кибер-даос
06.07.2018
13:29:18
Ааахахахаах, смешной КуТэ, прекрати =))) Хочу кнопку в окне, а она хренак и в отдельном окне =) def createView(title, model): global offset, views view = QtWidgets.QTableView() btn = QtWidgets.QPushButton() views.append(view) views.append(btn) view.setModel(model) view.setWindowTitle(title) view.move(100 + offset, 100 + offset) offset += 20 view.show() btn.show() Подскажите как бы так кнопку в том же окне нарисовать?

Jentry
06.07.2018
13:31:19
в линуксе 1 гиг из 4 занимает ядро
wut? в линуксе виртуальная адресация и ядро занимает несколько мегабайт

Aragaer
06.07.2018
13:32:46
могу ошибаться. Просто одно время имел дело с операционкой на основе линукса, там адреса начиная с 0xC0000000 были зарезервированы для ядра

как раз верхний гигабайт

Google
Aragaer
06.07.2018
13:33:19
ну и если в реальном линуксе глянуть, то стек живет где-то в районе 0xbчто-то

то есть по факту для хипа адреса даются между 0 и 0xc, то есть 3 гига

ну да, виртуальные

то есть адресное пространство процесса на 32-битной машине 4 гига, но по факту больше 3 гигов не зажрать

без PAE

Егор
06.07.2018
13:41:42
Друзья, подскажите ресурс, книгу или что ещё где много примеров с решением задач на питоне?

Jentry
06.07.2018
13:43:43
то есть адресное пространство процесса на 32-битной машине 4 гига, но по факту больше 3 гигов не зажрать
Да, здесь пишут, однако, что конфигурабельно при сборке ядра https://elinux.org/images/b/b0/Introduction_to_Memory_Management_in_Linux.pdf

Vladimir
06.07.2018
14:04:04
И снова всем привет

Есть модуль где gui на tkinter

Нажимаю кнопку

Идет вызов функции с циклом из другого модуля

Через коллбек значение идет в гуй и ставится на програсс баре

N. M.
06.07.2018
14:05:02
Анончик, пожалуйста, одним сообщением

Vladimir
06.07.2018
14:05:46
Проблема в том что проценты на нем не понявляются, но если остановить процесс, прервать, то появляются на оом месте где остановилосб

Т.е. функция для постановки процента вызывается нормально

Никаких исключений

Tigran
06.07.2018
14:06:11
Там наверняка где-то есть метод для перерисовки гуи. Надо его тоже вызывать

если уж у тебя всё в одном процессе крутится

Vladimir
06.07.2018
14:06:35
Там наверняка где-то есть метод для перерисовки гуи. Надо его тоже вызывать
Да, но почему тогда при остановке перерисовка происходит

Google
Vladimir
06.07.2018
14:06:47
Tigran
06.07.2018
14:06:49
очевидно, потому что у гуи доходят руки до перерисовки

У тебя же один процесс. Когда ты жмякаешь кнопку и начинаются вычисления, для гуи это один большой обработчик нажатия кнопки. Оно не может начать обрабатывать другие события (апдейтить прогрессбар, обрабатывать другие клики). Надо либо в отдельный процесс/поток выносить, либо регулярно вызывать метод (что-то вроде processEvents), который разгружает очередь событий.

И интерфейс сразу перестанет зависать.

Vladimir
06.07.2018
14:09:40
Спасибо, сейчас вот в доках ищк метод

Потому как в отдельный процесс выносить = переписать больше кода

А tk легковесный

Можно и чуть нагрузить вызовами

Tishka17
06.07.2018
14:12:21
А что, тред не поможет?

Олег
06.07.2018
14:19:46
В пандас как сделать фильтр по столбцу, что бы был 1 < df['col'] <= 10 Получается или pos = df['pos'] <= 10 что захватывает и нулевые значения или pos = df['pos'] > 0 что.. ну вы поняли)

При попытке сделать in list(range(1, 11)) даёт ошибку

Philipp
06.07.2018
14:22:15
df[ (df["col1"]<=10) & (df["col1"]>0)]

Олег
06.07.2018
14:22:30
Во спасибо, про & забыл совсем

Vladimir
06.07.2018
14:28:30
Все, получилось)

А что, тред не поможет?
Долго переписывать

Tishka17
06.07.2018
14:28:54
Ну тогда увы

Это же первое правило gui разработчика - никакой долгой работы в ui потоке

Nikolay
06.07.2018
14:42:36
а я думал, первое правило - не пиши гуй на питоне

Google
Tigran
06.07.2018
14:46:03
Чет в этом месте сомнительно. Разве новое событие не вызывает прерывание, которое останавливает вычисления.? Не шарю в гуи. Просто наблюдение со стороны
Хороший вопрос, как работают сигнал хендлеры в питоне. Но вообще прерывание обычно быстренько ставит новое событие в очередь и всё. Основной процесс обрабатывает его, когда выдаётся свободная минутка.

Rio
06.07.2018
14:48:59
Чет с балансировкой косяк. Обратная отдача первоочередна же.

Andrew
06.07.2018
14:49:30
Парни, при подключении к MySQL через sqlalchemy в Python возникает ошибка: "Authentication plugin '{0}' is not supported".format(plugin_name)) sqlalchemy.exc.NotSupportedError: (mysql.connector.errors.NotSupportedError) Authentication plugin 'caching_sha2_password' is not supported (Background on this error at: http://sql alche.me/e/tw8g) " Уже пробывал менять пользователя и пароль, изменял my.ini файл, но ничего не помагает, подскажите, как можно исправить эту ошибку?

Vladimir
06.07.2018
14:49:53
Я пишу небольшое приложение для своих нужд, поэтому простительно)

Ну тогда увы

Это же первое правило gui разработчика - никакой долгой работы в ui потоке

Tigran
06.07.2018
14:57:17
Чет с балансировкой косяк. Обратная отдача первоочередна же.
А как ещё делать? Если ты загрузил свой основной процесс вычислениями, а тут нужно запустить ещё один обработчик события, на предыдущие вычисления что - забить? А если новый обработчик тоже тяжёлый?

Andrew
06.07.2018
14:58:19
man читать
Я на винде.

Anton
06.07.2018
15:00:19
https://stackoverflow.com/questions/50349562/python-mysql-connector-caching-sha2-password-plugin

Страница 5840 из 9768