Anonymous
Добрый день! Как использовать модуль с процедурами и функциями из c в python?
Alex
Добрый день! Как использовать модуль с процедурами и функциями из c в python?
ну начнем того что в С нет процедур. способов много, ctypes \ cython \ boost python.
Alex
ну да, но я не хочу травмировать психику человека
Alex
и заставлять его руками писать экстеншны
Pavel
ну да, но я не хочу травмировать психику человека
у него процедуры в С есть. ему уже ничего не страшно
Pavel
хотя, если подумать, в с процедура - это функция которая возвращает void
Anonymous
Ткните пожалуйста в нужное направление - есть thread получающий данные через нерегулярное время и складывающий результат в переменую, другой поток должен данные с переменной снять и её обнулить. Что применить для этой задачи ( lock, condition variable ?) и через что реализовать взаимодействие с переменной (класс, очередь) ?
Игорь
Подскажи как снять ограничение с запускаемых процессов. У меня 4 ядра, я пытаюсь запустить несколько процессов паралельно. На момент запуска уже 2 работают, и 2 запускаются во время исполнения программы, и это предел. Я так понимаю что есть ограничение по ядрам, процесс на ядро, и больше нельзя запустить. Как убрать это ограничение ?
Игорь
ядер добавить
А если как-то попроще ? Пробовал через Pool, создать изначально 5 процессов +2, в диспетчере они отобразились как зависшие и неактивные. При включении процесса идет включение одного из зависших и опять же максимум таких можно 2+2
Tishka17
Хз что такое "зависшие" и "неактивные" процессы в винде
Tishka17
Попробуй в лог писать из каждого и смотри сколько их
Alex
я тут код посмотрел, это слегка пиздец.
Alex
и всю эту чудесатую логику мне читать очень лень
Alex
но как минимум ошибка в этой строке: track_proc = pool.apply_async(Track_Complect_Online(number_complect, Q_Track))
Alex
в общем правильно вам батенька сказали в соседнем чате, рано вам еще в процессы.
Roma
подскажите, есть ли отдельный чат для тестировщиков или сюда можно спрашивать?
Anonymous
в такой постановке звучит как задача для queue, но если надо именно через переменную, то можно через threading.lock и threading.event
очереди думаю не подходят, т.к. процесс собирающий данные в переменную "не знает" когда они понадобятся другом процессу, он должен "складывать их в кучку" до тех пор пока другой процесс их не заберёт и обнулит кучку. Ок значит применить Lock - а саму переменную для обмена данными между процессами сделать через класс ?
Nikolay
очереди думаю не подходят, т.к. процесс собирающий данные в переменную "не знает" когда они понадобятся другом процессу, он должен "складывать их в кучку" до тех пор пока другой процесс их не заберёт и обнулит кучку. Ок значит применить Lock - а саму переменную для обмена данными между процессами сделать через класс ?
Как реализовавывать объект для обмена данными это уже совсем частный вопрос. Возможно, ты будешь использовать List+Lock, если у тебя небольшая софтина. Или вообще использовать очередь, где один поток пишет в конец, а второй читает с начала
Артем
очереди думаю не подходят, т.к. процесс собирающий данные в переменную "не знает" когда они понадобятся другом процессу, он должен "складывать их в кучку" до тех пор пока другой процесс их не заберёт и обнулит кучку. Ок значит применить Lock - а саму переменную для обмена данными между процессами сделать через класс ?
складывать в кучку вполне себе задача для queue.queue. Если кучки должны как-то различаться, то можно например один и тот же dict передать в поток отправителя и получателя и через lock использовать его, либо в queue класть dict с идентификатором кучки если нужно именно переменную менять, то да, пожалуй класс с classmethod подойдет
Nikolay
да я к тому, что в прототипе обмен между тредами я сделал через глобальную переменную, но я так понимаю в таких вещах это дурной тон
Если это твоя наколеночная софтина для какой-то минимальной автоматизации, то вообще пофиг как оно там написано. Ну и очередь - вполне норм вещь для твоей задачи. Пишешь сколько хочешь, а второй поток читает из очереди когда ему надо.
Dmitry
Всем привет, кто нибудь может помочь сделать парсер на Python ?
Туночка️
парсе чего?
Туночка️
если ШТМЛ
Туночка️
то он уже ешсть
Dmitry
Там html, но критерии поиска ajax
Aidar
Там html, но критерии поиска ajax
Понятнее не стало, выражайтесь конкретнее
Туночка️
Там html, но критерии поиска ajax
https://ru.stackoverflow.com/questions/678626/%D0%9F%D0%B0%D1%80%D1%81%D0%B8%D0%BD%D0%B3-ajax-python-requests
Dmitry
Там критерии для поиска товаров в виде всплывающего окна, а остальное html
Dmitry
Выбрать критерии запросами нельзя
Туночка️
Выбрать критерии запросами нельзя
может эмулятор брауезра заюзать
Dmitry
Я тоже так думаю, тип Selenium
Dmitry
https://www.businessesforsale.com/search/businesses-for-sale-4
Aidar
https://www.businessesforsale.com/search/businesses-for-sale-4
И что вы хотите доставать?
Dmitry
И что вы хотите доставать?
Информацию о всех бизнеса которые там продают
pishite
Добрый вечер подскажите с сортировкой списков через sorted в обратном порядке без изменения списка
Dmitry
Помоему reverse=True
pishite
reverse?
Список меняется тогда
pishite
Как правильно написать
Dmitry
Нет
pishite
sorted(ot, reverse=True)
pishite
Так?
Anonymous
Если это твоя наколеночная софтина для какой-то минимальной автоматизации, то вообще пофиг как оно там написано. Ну и очередь - вполне норм вещь для твоей задачи. Пишешь сколько хочешь, а второй поток читает из очереди когда ему надо.
еще минутку вашего внимания, софтина будет действительно "наколеночная" , обмен сделал через глобальную переменную, как простейшее решение, думаю другие методы будут избыточными import time import websocket import threading from time import sleep import json from datetime import datetime def on_message(ws, message): global buys_vol, sales_vol msg = json.loads(message) lock.acquire() if msg['data']['m'] == true: sales_vol += float(msg['data']['q']) else: buys_vol += float(msg['data']['q']) lock.release() true = True false = False lock = threading.Lock() buys_vol = 0 sales_vol = 0 ws = websocket.WebSocketApp("wss://stream.binance.com:9443/stream?streams=btcusdt@aggTrade",on_message = on_message) wst = threading.Thread(target=ws.run_forever) wst.start() while True: time.sleep(3) lock.acquire() print("%s, buy vol:%s, sale vol:%s" % (datetime.now().strftime('%H:%M:%S'), buys_vol,sales_vol )) buys_vol = 0 sales_vol = 0 lock.release()
pishite
pishite
Почему не работает
pishite
Вот вывод
pishite
Сортировки нет
pishite
Nikolay
Потому что sorted возвращает копию отсортированного списка?
Dmitry
Нужно присвоить переменной ot
pishite
Нашел проблему, невнимательность, мне надо было вывести сразу
pishite
Так как она временно хранит данные
Dmitry
ot = sorted ()
pishite
Пока что это не нужно
pishite
Нужно по учебнику
pishite
Спасибо разобрался
Nikolay
Нужно по учебнику
По учебнику есть канал для новичков) Там с такими задачами активнее помогают)
pishite
Можно ссылочку
Nikolay
Можно ссылочку
https://t.me/ru_python_beginners
Dmitry
Так Кто нибудь поможет сделать парсер? Там не сложно блокировок нет, только ajax
Dmitry
Я заплачу
SHADRIN
А в чем проблема ajax парсить
Dmitry
fl.ru - без проблем
Не разу не пользовался
Anonymous
Объясните мне как пользоваться poetry. Я создаю проект poetry new project. Добавляю новый модуль poetry add aiohttp. И poetry ставит этот модуль глобально.