Есть ли какой-либо Шпион ++ эквивалентен для Linux/X-окна? [закрытый]

Несколько комментариев о вашем коде:

  • все эти global переменные пугают меня! что не так с передачей параметров и возвращением состояния?
  • вы не используете какую-либо функциональность из Pandas, создавая фрейм данных только для того, чтобы использовать его для тупой итерации по строкам, это заставляет его выполнять много ненужной работы
  • стандартный модуль csv (может использоваться с delimiter='|') обеспечивает гораздо более тесный интерфейс, если это действительно лучший способ сделать это

это может быть лучший вопрос для https://codereview.stackexchange.com/

, просто играющих с производительностью альтернативных способов работы со строками. Из приведенного ниже поясняется, что работа «по строкам» в основном всегда медленная, когда Панды

начинают с создания кадра данных, чтобы проверить это:

import numpy as np
import pandas as pd

df = pd.DataFrame(np.random.randint(1, 1e6, (10_000, 2)))
df[1] = df[1].apply(str)

это занимает 3,65 мс для создать фрейм данных со столбцами int и str. затем я попробую подход iterrows:

tot = 0
for i, row in df.iterrows():
    tot += row[0] / 1e5 < len(row[1])

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

tot = 0
for i in range(df.shape[0]):
    tot += df.loc[i, 0] / 1e5 < len(df.loc[i, 1])

, что сокращает это до 408 мс. затем я пытаюсь apply:

def fn(row):
    return row[0] / 1e5 < len(row[1])

sum(df.apply(fn, axis=1))

, который в основном совпадает с 368 мс. наконец, я нахожу некоторый код, которым Пандас доволен:

sum(df[0] / 1e5 < df[1].apply(len))

, что занимает 4,15 мс. и другой подход, который пришел мне в голову:

tot = 0
for a, b in zip(df[0], df[1]):
    tot += a / 1e5 < len(b)

, что занимает 2,78 мс. в то время как другой вариант:

tot = 0
for a, b in zip(df[0] / 1e5, df[1]):
    tot += a < len(b)

занимает 2,29 мс.

13
задан 3 revs, 3 users 100% 8 September 2010 в 07:25
поделиться

2 ответа

Тогда, я протестировал свою среднюю кнопку мыши с помощью названного инструмента xev. Это создает новое окно, которое можно отправить событиям (путем нажатия на него, или нажимающие кнопки), которые пойманы и распечатаны на stdout. Согласно комментарию jpalecek, это может также использоваться для наблюдения других окон вместо нового. Следующее будет наблюдать события из окна Вы выбранный путем нажатия на него:

xev -id $(xwininfo | awk '/Window id/ { print $4 }')

Для сбора общей информации может использоваться xwininfo, который может отобразить детей, атрибуты и т.д.

8
ответ дан 2 December 2019 в 01:32
поделиться

Я видел функцию "шпиона" от Повидла. Это - инструмент тестирования GUI.

1
ответ дан 2 December 2019 в 01:32
поделиться
Другие вопросы по тегам:

Похожие вопросы: