@Fox Привет.Я описывал задачу в этой теме https://community.bablosoft.com/topic/27417/вызов-многопоточной-функции
Дело в том,что я не могу вообще никак перевести свой скрипт на многопоток,у меня тупо,что в вызове функции в многопоток,что просто обычный многопоток,выполняет свою работу с данными по очереди,а не одновременно.И это очень сильно бьет по времени,а нужна именно скорость обработки.Все уже готово и скрипт рабочий полностью,но скорость обработки заставила воспользоваться многопотоком.Ранее,подобных проблем не замечал,а сейчас элементарную задачу не могу уже несколько дней решить.
Скрипт очень простой и работает без браузера вообще,в скрипте используется только одно взаимодействие с гет запросом.Пример скрипта я приложил в этой теме(но без запросов),он точно почти такой же,как и основа.
Логика такова:
1)Запускается скрипт (без всяких ресурсов изначально и данных) и создаются два ресурса.
2)Делается запрос на сайт,который обрабатывается в отдельной функции,т.е. обрабатывает полученные строки и записывает в ресурс.
3)Вызывается функция в несколько потоков,которая работает (должна работать) с каждой строкой из созданного ранее ресурса(уникальной)в отдельном потоке.Данные обрабатываются и записываются во второй ранее созданный ресурс.
4)Как только данные обработаны,ресурс переводится в список и список записывается в файл.Более ничего не делается.
-Сперва я думал,что проблема в создаваемых в ходе работы ресурсах,но нет.Создавал изначально ресурсы и то же самое было.
-Потом пробовал брать из файлов значения\потом создавать файлы по ходу и из них брать данные\сохранять напрямую пытался и.т.д
-Возможно думал стоят какие то ограничения из за слабого пк с 4 гб оперативы и взял сервер с 64 гб,но как обрабатывалась строка за 5 минут на моем пк,так же по скорости и на серваке.Ладно, с этим я уже ничего не поделаю из за регулярок в проекте,согласен.Но вот перевести на поток и хотя бы по 10 строк одновременно обрабатывать,очень бы помогло.А сейчас в любом случае,у меня,сколько бы потоков не выставил - работает все равно как один,просто по очереди разный поток берет свои данные(
Bluestacks в/c BAS
-
-
@UserTrue said in Bluestacks в/c BAS:
adb
А встречал кто-нибудь обертку над adb, чтобы кликать можно было нормально по xpath? Пробовал делать автокликер на Memu - в принципе работает, но часто не ждет элемента (логики в нем нет), а надо часто ожидать, отсюда ошибки
-
Вот мой код на python тут все с проверкой присутствия и задержками на ожидания
но тут нужно понимать язык программирования pythonfrom PIL import Image import imagehash import pyautogui import time import os pyautogui.FAILSAFE = False countFailFindCloseButton = 0 #pyautogui.click('close1.png') def checkGetFreeIsOpen(img): time.sleep(2) return pyautogui.locateOnScreen(img) def waitAds(): if(pyautogui.locateOnScreen('error.png')): checkButton('errorClose.png') checkButton('button.png') waitAds() else: time.sleep(1) if(checkGetFreeIsOpen('getFree.png')): print('Ожидаю начала показа показа рекламы') waitAds() return False else: print('Начался показ рекламы') watchAds(31) def checkButton(button): time.sleep(2) buttonlocation = pyautogui.locateOnScreen(button, grayscale=True, region=None, confidence=0.8) if(buttonlocation): buttonpoint = pyautogui.center(buttonlocation) pyautogui.click(buttonpoint) else: print('Кнопка '+button+' не найдена иду на другой заход') checkButton(button) def checkClose(button, top = 60): try: buttonlocation = pyautogui.locateOnScreen(button, grayscale=True, region=(0,top, 1920,250), confidence=0.9) except: print('Программа рухнула') watchAds(31) if(buttonlocation): buttonpoint = pyautogui.center(buttonlocation) pyautogui.click(buttonpoint) return True else: print('Кнопка '+button+' не найдена') return False def watchAds(sec): time.sleep(sec) if(checkCloseButtonPresent()): time.sleep(1) if(pyautogui.locateOnScreen('skip.png', confidence=0.8)): print('Обнаружено случайное прерывание первого типа') checkButton('skipButton.png') watchAds(31) elif(pyautogui.locateOnScreen('skip1.png', confidence=0.8)): print('Обнаружено случайное прерывание второго типа') checkButton('skipButton1.png') watchAds(31) else: time.sleep(1) checkCloseButtonPresent() start() else: myScreenshot = pyautogui.screenshot() myScreenshot.save('fail_find_close_button'+str(time.time())+'.png') print('Что пошло не по плану кнопка закрыть рекламу не была обнаружена') global countFailFindCloseButton if(countFailFindCloseButton > 2): #exit() if(checkClose('tabIcon.png', 0)): checkCloseButtonPresent() start() else: countFailFindCloseButton += 1 watchAds(5) def checkCloseButtonPresent(): path = './close' dir_list = os.listdir(path) for fileClose in dir_list: if(checkClose(path+'/'+fileClose)): return True return False #if(checkClose('./close/close1.png') or checkClose('./close/close2.png') or checkClose('./close/close3.png') or checkClose('./close/close4.png') or checkClose('./close/close5.png') or checkClose('./close/close6.png') or checkClose('./close/close7.png') or checkClose('./close/close8.png') or checkClose('./close/close9.png') or checkClose('./close/close10.png')): # return True #else: # return False def start(): if(checkGetFreeIsOpen('getFree.png')): checkButton('button.png') waitAds() else: print('Не обнаружена вкладка getFree начинаю все поновой') start() start()На сколько я помню там есть какие то программы которые позволяют делать примерно тоже что и этот мой код
т.е выпонять и поиск по экрану и задержку на ожидание и какие то еще действие
поисщи в гугле что типа
auto click , automatization click -
@seoshnek said in Bluestacks в/c BAS:
А встречал кто-нибудь обертку над adb,
Их куча разных на гитхабе, лично я писал свою. Есть еще большая библиотека называется appium, я ее не стал использовать тк там надо устанавливать Java и настраивать переменные окружения, может еще что-то, но мне было лень это проделывать каждый раз ))
-
-
@seoshnek said in Bluestacks в/c BAS:
Мое нубское видение - я должен открыть где-то на 127.0.0.1 обертку в браузере и там увидеть android. И потом уже кликать. @UserTrue, вы такое написали? Через браузер?
Нет конечно, из коробки нет ничего такого. Все кодом и головой ) Утилита adb позволяет взаимодействовать с андроидом, uiautomatorviewer утилита которая позволяет находить координаты нужных элементов, по xpath в том числе.
-
