Size: a a a

2019 May 25

W

Womchik in SPb Python
strace что говорит?
источник

∀lǝxǝʎ in SPb Python
Очевидно, что read?
Но судя по выводу прочитал он всё
источник

E

Eugene in SPb Python
∀lǝxǝʎ
Привет.

Есть скрипт, который что-то перестал работать и есть только одно подозрение,  данных стало слишком много.
Вызывается shell и дальше читается его вывод  в переменную.
subprocess.Popen →  stdout.read().strip()
И это как будто просто зависает.

Размер считываемых данных в районе 110Мб. Судя по ps'у процесс уже давно отъел пложенную ему память и больше ни растёт, ни ест цпу.

python 2.7.13, bufsize не передаётся.
Что-то знакомое, но не могу вспомнить где я читал про подобные проблемы. Но как-то там ругали subprocess за что-то подобное. Вот нашел что-то, но не уверен, что оно: https://thraxil.org/users/anders/posts/2008/03/13/Subprocess-Hanging-PIPE-is-your-enemy/

А как ты всё это используешь? Минимальный код можешь показать?
источник
2019 May 26

∀lǝxǝʎ in SPb Python
Eugene
Что-то знакомое, но не могу вспомнить где я читал про подобные проблемы. Но как-то там ругали subprocess за что-то подобное. Вот нашел что-то, но не уверен, что оно: https://thraxil.org/users/anders/posts/2008/03/13/Subprocess-Hanging-PIPE-is-your-enemy/

А как ты всё это используешь? Минимальный код можешь показать?
У меня примерно такое legacy: https://pastebin.com/jDUQFf9t
источник

DI

Danil Ivanov in SPb Python
источник

DI

Danil Ivanov in SPb Python
источник

DI

Danil Ivanov in SPb Python
источник

DI

Danil Ivanov in SPb Python
источник

DA

Dmitry Alimov in SPb Python
👍🏻
источник

M

Mike in SPb Python
😱
источник

E

Eugene in SPb Python
∀lǝxǝʎ
У меня примерно такое legacy: https://pastebin.com/jDUQFf9t
Как минимум вижу, что не используешь communicate. Почему?
источник

R

Roman in SPb Python
привет.есть тут люди кто разбирается с numpy. я понимаю как решить свою задачу без numpy, но вроде numpy быстрее работает с матрицами и вот хочу попробовать numpy. Есть задача:  на вход получаю список списков,  и мне надо подсчитать сколько скисков внутри списка у которых 3 элемент будет больше 4 элемента на N%. Подскажите кто работал с numpy, какие функции гуглить для такого. или это лучше сделать вообще не с numpy, а просто for  и  if.
источник

∀lǝxǝʎ in SPb Python
Eugene
Как минимум вижу, что не используешь communicate. Почему?
Писал это не я, да и питон у нас тут большая редкость. Тут скорее вопрос зачем он пайпит stderr и потом его не читает, но это ж не важно.
Я не очень верю в то, что тут от лишних данных случается какой-то deadlock, который communicate, вроде как призван устранять. (я вчера там подчистил ненужные данные в выводе внешней программы и скрипт стал работать, но рано или поздно мы опять в это встрянем)
источник

E

Eugene in SPb Python
Roman
привет.есть тут люди кто разбирается с numpy. я понимаю как решить свою задачу без numpy, но вроде numpy быстрее работает с матрицами и вот хочу попробовать numpy. Есть задача:  на вход получаю список списков,  и мне надо подсчитать сколько скисков внутри списка у которых 3 элемент будет больше 4 элемента на N%. Подскажите кто работал с numpy, какие функции гуглить для такого. или это лучше сделать вообще не с numpy, а просто for  и  if.
список списков образует матрицу или не образует? Списки в списке одной длины?
источник

R

Roman in SPb Python
Eugene
список списков образует матрицу или не образует? Списки в списке одной длины?
одной длины
источник

E

Eugene in SPb Python
Roman
одной длины
Ну вот и делай в numpy, ничего сложного.
import numpy as np

arr = np.array(list_of_lists)
ratios = arr[:, 2] / arr[:, 3]


Получишь в ratios отношение 3 элемента к 4 в каждом списке.
источник

E

Eugene in SPb Python
∀lǝxǝʎ
Писал это не я, да и питон у нас тут большая редкость. Тут скорее вопрос зачем он пайпит stderr и потом его не читает, но это ж не важно.
Я не очень верю в то, что тут от лишних данных случается какой-то deadlock, который communicate, вроде как призван устранять. (я вчера там подчистил ненужные данные в выводе внешней программы и скрипт стал работать, но рано или поздно мы опять в это встрянем)
всё, что процесс вывел тебе через subprocess.PIPE надо читать именно через communicate. Так было в доке питона написано (сейчас лень смотреть где конкретно) по крайней мере.
stderr можно тажке прочитать (это второй элемент кортежа, который возвращает communicate).
источник

E

Eugene in SPb Python
Eugene
Ну вот и делай в numpy, ничего сложного.
import numpy as np

arr = np.array(list_of_lists)
ratios = arr[:, 2] / arr[:, 3]


Получишь в ratios отношение 3 элемента к 4 в каждом списке.
далее уже берешь и логически смотришь то что получилось:
ratios > N

и получаешь вектор из bool-ов
источник

∀lǝxǝʎ in SPb Python
Eugene
всё, что процесс вывел тебе через subprocess.PIPE надо читать именно через communicate. Так было в доке питона написано (сейчас лень смотреть где конкретно) по крайней мере.
stderr можно тажке прочитать (это второй элемент кортежа, который возвращает communicate).
Ок, заменю stdout.read на communicate.
источник
2019 May 27

PT

Peter Teslenko in SPb Python
Расскажите про pipenv vs venv. Гугль выдаёт противоречивые мнения.
источник