#python

38
109
Cython sprawia, że pisanie rozszerzeń C dla Pythona jest tak proste, jak sam Python!

Język Cython jest nadzbiorem języka Python, który dodatkowo obsługuje wywoływanie funkcji C i deklarowanie typów C na zmiennych i atrybutach klas. Dzięki temu kompilator może wygenerować bardzo wydajny kod C z kodu Cythona. Wygenerowany kod C jest następnie kompilowany przy pomocy jednego z dostępnych kompilatorów C/C++ do zoptymalizowanego modułu, który może zostać zaimportowany i użyty przez program napisany w Pythonie.

W skrócie Cython to Python ale z typami danych C - co pozwala mu być jednym z najlepszych i najprostszych narzędzi do przyspieszania programów napisanych w Pythonie!

Przykładowo w Cythonie napisane są moduły Pythona znane ze swojej szybkości jak:


Oficjalny poradnik jak zacząć z Cythonem można zaleźć pod adresem: https://cython.readthedocs.io/en/latest/src/tutorial/cython_tutorial.html

#technologia #programowanie #python #cython
dc103c9b-f99d-48d3-b674-ba7bc1d19ec4
slime-mold

@koszotorobur @rust-n-dust dzięki! dobry kontent

Zaloguj się aby komentować

#anonimowehejtowyznania

#it #programowanie #programista15k #python #cpp

Zastanawiam się nad przejściem z C++ na Pythona - jest dużo więcej zdalnych ofert, stawki też całkiem niezłe. Czy ktoś z was ma coś podobnego za sobą i może podpowiedzieć jak to wygląda? Co robić w przypadku braku typowo komercyjnego doświadczenia z pythonem? Po prostu wysyłać CV i liczyć, że ktoś mnie zaprosi na rozmowę czy robić jakieś certyfikaty? Mam ~5 lat doświadczenia w it. Początkowo jako support, większość jako software developer - C++, trochę Javy, python na wewnętrzne potrzeby firmy. Do tego sporo pobocznych skilli na umiarkowanym poziomie - m.in.: js, HTML, CSS.

Piszę z anonimowych, bo nie chcę udostępniać sczegółów ze swojego konta.



Kliknij tutaj, aby odpowiedzieć w tym wątku anonimowo
Kliknij tutaj, aby wysłać OPowi anonimową wiadomość prywatną
ID: #655dedb8cf4ac0227e44bf8a
Post dodany za pomocą AnonimoweHejtoWyznania: https://anonimowehejto.pl - Zaakceptowane przez: HannibalLecter
Basement-Chad

W czasach eksplozji LLM'ów to bym się raczej zastanowił nad przejściem z C++ na przykład na budowlankę albo rolnictwo

mroczny_pies

Nie znam Cię, więc nie wiem jak to się ma do Ciebie ale podzielę się swoim doświadczeniem z tych okolic. Pracuję w projekcie gdzie mamy część pythonową (zarządzanie) i cpp (faktyczne mielenie ruchu i danych). Jest duża różnica w myśleniu, postrzeganiu problemów i tworzeniu rozwiązań.

Zarówno ja rozumiem kod cpp, jestem w stanie go poprawić albo zmienić, tak samo inni są w stanie zrozumieć mój kod albo go zmienić. Ale każdy jednak w nie swojej bajce "zrobiłby to inaczej". I wydaje mi się że tutaj jest największy problem takiego przejścia: że nie tylko musisz się nauczyć innych narzędzi ale przede wszystkim zacząć inaczej myśleć

anonimowehejto

OP: @HannibalLecter co do samego języka się zgodzę, ale co z całą resztą? Konkretna dziedzina, frameworki itd. W tej chwili programuję bliżej niż dalej sprzętu, a python to głównie inne tematy - backendy webowe, analiza danych, bazy danych, cloudy itd. Z tym nie mam dużego doświadczenia (ale też nie zerowe).




Ten komentarz został dodany przez osobę dodającą wpis (OP)


Zaakceptował: HannibalLecter

Zaloguj się aby komentować

Czy mógłby ktoś mi powiedzieć jakie złe intencje ma poniższy kod? Wykryłem go u siebie w jednej z instalacji IoT?
#cyberbezpieczenstwo #python #it #programowanie
263972cd-3970-4b64-b20c-f251f3e904a8
Vuaaas

@stg Nigger encode sendall xD

Trismagist

@stg A możesz powiedzieć skąd ten soft, jak go wykryłeś i do jakiego urządzenia miał by być przeznaczony ?

stg

Mam postawiony m.in. Node-Red do zarządzania. Przez moją nieuwagę został wystawiony do internetu na około 2 dni. Dzisiaj zobaczyłem node, którego nie tworzyłem, a który odpalał skrypt o którym mowa

Zaloguj się aby komentować

Olx Scraper.
Czasami przeglądam #olx w poszukiwaniu rzeczy do naprawy lub teraz auta bo moje zostało skasowane. Każdorazowe wyszukanie produktów i ustawienie odpowiednich filtrów zajmuje sporo czasu, dlatego kiedyś napisałem sobie skrypcik w #python który to automatyzował. Teraz postanowiłem opakować to w #ui . Napisałem apke scrapującą olx, która będzie działać na platformach

  • mobilnych #android #ios
  • desktopowych #windows #linux #macos

Funkcjonalność

  1. Dodawanie( i usuwanie) przedmiotów do obserwowania poprzez wklejenie linka do nich. Wystarczy wejść na strone olx. Wyszukać co nas interesuje, ustawić sobie filtry jakie chcemy, skopiować link i wkleić je do apki.
  2. Zapamiętywanie dodanych wyszukiwań w bazie danych aby nie trzeba było powtarzać powyższej czynności w kółko
  3. Wyświetlanie interesujących nas przedmiotów w rzędach. Po kliknięciu na kafelek z jakimś przedmiotem, apka odpala domyślną przeglądarkę i kieruje nas to strony z opisem przedmiotu ( już na platformie olx)

Jak narazie apka spełnia te założenia ale jest jeszcze sporo do poprawy.

  1. Optymalizacja. Apka działa płynnie na moim 7 letnim #xiaomi ale i tak jest mega nie zoptymalizowana.
  2. Czasami obok ceny pojawiają się artefakty z #html . Pewnie ogarnę to jakimś #regex , bo nie chce mi się już poprawiaćtego scrapera który w 99% przypadków działa.
  3. Jeśli dane ogłoszenie przekierowuje nas z olx na otomoto to po gliknięciu kafelka z nim dostaniemy error 404. ( źle sklejam url)
  4. Apka działa tylko z olx. Zamierzam to zmienić aby działała też z allegro i otomoto.
  5. Na platformach desktopowych., przesuwanie poziomej listy działa tylko jeśli korzystamy z laptopa i używamy touchPada. Na PC trzeba coś wykombinować. Pewnie dodam przyciski przesuwające listę.
  6. Dodanie zdjęcia przedmiotu do kafelka z nazwą i ceną

I to chyba tyle z rzeczy, o których na tą chwile pamiętam. Co o tym myślicie? Co mogę jeszcze poprawić/zrobić? Poniżej zdjęcie wersji desktop i film z mobilnej(android).

https://streamable.com/1yzc1s

#programowanie #diy #webscraping #scraping #flutter
2645c55d-3b54-4b20-8924-85514b8eaa8a
VonTrupka

to tylko #chwalesie czy owocami pracy zamierzasz częstować? (´・‸・ ` )

Gitler

@VonTrupka kod będzie publicznie dostępny. A jak ktoś będzie chciał to moge podrzucić też skomilowaną wersje

Yellowbike

Tez mnie irytowało to wyszukiwanie w otomoto i olx i napisałem w pythonie skrypt który sprawdza co 5 min czy pojawiła sie jakaś nowa aukcja przy zadanych parametrach filtra i skrypt wysyłał link i opis telegramem na telefon. Tutaj możesz powiadomienia o tym zagnieździć w apce.


Jescze jedno co jest beznadziejne w olx i otomoto. Jeśli ogłoszenie jest zakończone to znika i to tez mogłoby być w powiadomieniach i dodatkowo gdzieś zachowany screenshot strony z oferta albo sam opis.

Gitler

@Yellowbike po czym identyfikowałeś aukcje ?

Yellowbike

W otomoto każda aukcja tzn ogłoszenie ma swój nr i modyfikując filtr o dodanie np &min_id=61158400

Wyświetlają sie tylko te ktore maja wyższe numery czyli sa nowsze.

Miałem tez jakis sposób na konwertowanie nr id z paska adresu ogłoszenia bo tam jest to jakby zaszyfrowane w literach i cyfrach.l ale musiałbym pogrzebać w kodzie bo tak na szybko nie pamietam.

psalek

@Gitler czego używasz do deploy'u pythona na androida?

Gitler

@psalek niczego. Za dużo ebania. Przepisałem skrypt na darta

Zaloguj się aby komentować

Kod na uruchamianie funkcji synchronicznych w Pythonie w asynchroniczny sposób:

# Oczywiście warto używać modułów natywnie asynchronicznych od razu jeśli jest to możliwe: https://github.com/timofurrer/awesome-asyncio

import asyncio
import urllib.request

def get_page(url):
‎ ‎ ‎ ‎ with urllib.request.urlopen(url) as f:
‎ ‎ ‎ ‎ ‎ ‎ ‎ ‎ return f.read(100).decode('utf-8') # Zwraca jedynie 100 pierwszych znaków dla zobrazowania jako przykład

async def main():
‎ ‎ ‎ ‎ urls = [' https://www.google.pl' for _ in range(10)] # Ta sama strona 10 razy jako przykład - ale tu należy podać swoją listę stron
‎ ‎ ‎ ‎ tasks =[asyncio.to_thread(get_page, url) for url in urls]
‎ ‎ ‎ ‎ return await asyncio.gather(*tasks)

results = asyncio.run(main())
[print(result) for result in results]

Kod działa jedynie z Pythonem 3.9 lub wyższym.
Dla starszych wersji Pythona można użyć staroszkolnego podejścia z ThreadPoolExecutor lub metody run_in_executor dla loop z modułu asyncio.

#technologia #komputery #programowanie #python
rayros

Brakuje tutaj kolorowania składni :d

koszotorobur

@hejto - @rayros mówi, że brakuje tutaj kolorowania składni .

A brakuje przede wszystkim możliwość umieszczania bloków kodu.

Zaloguj się aby komentować

Przez lata skompilowałem sobie listę pytań, z którymi najczęściej spotkałem się na rozmowach kwalifikacyjnych - może komuś się przyda:

  • Czym w ogóle jest Python i jakie ma wady i zalety?
  • Jakie prymitywne typy danych oferuje Python i jakie mają właściwości?
  • Które złożone typy danych są mutowalne i dlaczego jest to przydatne?
  • Jakie znasz różnice pomiędzy Pythonem 2 a 3?
  • Podaj metody formatowania ciągów znaków (stringów) i interpolacji zmiennych
  • Wymień kilka najczęściej używanych modułów z biblioteki standardowej i ich zastosowanie
  • Z jakimi zewnętrznymi modułami lubisz pracować najbardziej?
  • Wyjaśnij wyrażenia listowe (list comprehensions) i podaj ich przykład
  • Jak wykonać kod Pythona asynchronicznie?
  • Podaj przykład obsługi błedów w Pythonie
  • Jak używać menedżera kontekstu (context manager)?
  • Czym jest GIL (Global Interpreter Lock) i jak go obejść?
  • Jeśli klasa dziedziczy z innej klasy ale obie klasy mają tę samą metodę, to metoda z której klasy zostanie użyta? Tip: MRO (Method Resolution Order)
  • Wyjaśnij dekoratory i podaj różnice pomiędzy "@classmethod" i "@staticmethod"
  • Jak funkcja zwana "super()" pomaga w zarządzaniu dziedziczeniem?
  • Jak przyspieszyć wykonywanie kodu Pythona?
  • Jak testujesz swoje programy napisane w Pythonie?

Często są też zadania programistyczne ja na przykład:

  • Wyświetl określone informacje ze strony internetowej użwając Pythona
  • Zaimplementuj Most Recently Used (MRU) w Pythonie bez użycia modułów zewnętrznych
  • Zaimplementuj dowolny algorytm sortowania w Pythonie

Tych zadań programistycznych w internecie jest sporo ale większość firm używa wariacji tych samych kilku pytań - na szczęście poważne firmy odchodzą od takiego sprawdzania wiedzy, bo to jedynie sprawdza czy ktoś jest w stanie nauczyć się kilku rozwiązań na pamięć.
Jakby, ktoś chciałby zacząć się uczyć, to strona Pythona ma świetny tutorial po polsku: https://docs.python.org/pl/3/tutorial/index.html.
Oczywiście o wiele więcej jest materiałów po angielsku - jak na przykład ten całkiem przyjemny godzinny tutorial dla początkujących: https://youtu.be/kqtD5dpn9C8.

#technologia #programowanie #python
ZohanTSW

Ktoś dzisiaj jeszcze pyta o różnice między pythonem 2 a 3?

Strus

@ZohanTSW Jak dla kogos to jest istotne to i tak nie chcesz w tej firmie pracowac

koszotorobur

@ZohanTSW - to takie trochę podchwytliwe Pytanie - sprawdza cztery rzeczy:


  • Czy ktoś pracuje z Pythonem na tyle długo by znać te różnice

  • Czy ktoś wie, że Python 2 jest End of Life

  • Czy ktoś wie jakie ulepszenia każda nowa wersja Pythona wprowadziła (i ich potrafi użyć)

  • Czy ktoś po prostu interesuje się Pythonem i jego ekosystemem i w jakim stopniu


Ja zdecydowanie bym nie zaakceptował oferty z firmy która wymaga używania Pythona 2 - niech się inni męczą

GetBetterSoon

@koszotorobur Na pythoninstitute.org jest tez zacny kurs.

Zaloguj się aby komentować

Dokończ zadanie:
print((7 - 2) * "*" + " " + int((9 / 3)) * chr(42) + " * ")

#python #heheszki
GetBetterSoon

@koszotorobur widze ze ktos zaczal sie uczyc pythona i odrazu przybiegl sie pochwalic internetowym kolegom

koszotorobur

@GetBetterSoon - dobrze, że Ty chociaż chwalisz się swoją ponadprzeciętną inteligencją na tym portalu z nieśmiesznymi obrazkami mój internetowy kolego - nie móc ocieplić się w jej blasku byłoby niepowetowaną stratą

koszotorobur

@def - Panie i Panowie - mamy zwycięzcę!

Niech posypią się pioruny w nagrodę!

Zaloguj się aby komentować

Napisałem swój pierwszy "poważniejszy" kod w pythonie pod bota z Discorda pod serwery gier Source i Goldensource. Po dodaniu IP serwera do listy, serwer ten jest odpytywany co jakiś czas czy serwer ma jakiś graczy i wydaje odpowiedni komunikat na czacie.
Niby mała rzecz, a przydatna w przypadku martwego multiplayera...
Wystarczy podać w enviromentsach token do bota, id kanału i role, które mają być wołane i odpalić skrypt na swoim hoście.
Jeszcze bede refactorował, póki co chciałem by jakkolwiek działało
https://codeberg.org/xelot/dm_server/src/branch/main/player_activity_bot.py
https://codeberg.org/xelot/dm_server/src/branch/main/.env
#programowanie #gry #python
ade239a7-0e25-4324-95b2-1f76a586ed84
Hepar

Świetna robota Tomeczku!


W kwestii refactoru - całość wygląda nawet git, jedyne co to bym ten fragment bym zmienił, żeby wychodzić z pętli elegancko i ograniczyć liczbę powtórzeń jak request nie działa.


Tutaj cały wątek na SO jak to najlepiej obsłużyć - https://stackoverflow.com/questions/2083987/how-to-retry-after-exception


retries = 3

while retries:

            try:<br />

                players_list = await a2s.aplayers(address)<br />

                retries = 0<br />

            except a2s.BufferExhaustedError:<br />

                print("BufferExhaustedError: retrying in 30 secs")<br />

                retries -= 1<br />

                await asyncio.sleep(30)<br />

            except TimeoutError():<br />

                print("TimeoutError: retrying in 1 minute")<br />

                retries  -= 1<br />

                await asyncio.sleep(60)

Zaloguj się aby komentować

Mój edytor tekstu, już jest w sumie na takim poziomie, że piszę go w nim samym.
#programowanie #python #tkinter
Fausto userbar
cdfdc4f6-d2cf-44e2-859e-c2f1fc73abf4
Zielczan

@Fausto kupilem sobie ksiazke do pythona kiedys, co prawda nie mozna powiedziec, ze nic sie nie nauczylem, bo cos tam umiem, ale skonczylo sie na C# w koncu, lepiejmi siadlo

Vuaaas

@Zielczan C# byłby całkiem fajną alternatywą dla Javy gdyby Microsoft nie był taki zjebany. Chociaż były różne podejścia, f# i inne badziewia

Zielczan

@Vuaaas miałem Jave na studiach i C# mi sie bardziej podoba, ale to moze byc zludne wrazenie, bo ostatni raz w Javie smarowałem coś z 12 lat temu, a Sharpa używam powiedzmy że codziennie.

Zaloguj się aby komentować

Ejejejejej. Pochwalcie się co ciekawego ostatnio znaleźliście na temat #programowanie - jakąś bibliotekę?
Może jakiś fajny AI model co można uruchomić lokalnie?
Może jakiś zajeb%@#% serwis?
Albo coś fajnego self hosted?
Mam wolny wieczór, chętnie o czymś ciekawym poczytam.
#sztucznainteligencja #js #javascript #react #aws #google #python #php #golang #rust #react
Klopsztanga userbar
dotevo

ostatnio sporo siedzę w tematach virtio służbowo, ale chyba to mało dla Ciebie interesujące.

Klopsztanga

@dotevo co uzywasz do wirtualizacji, i jakiego typu to jest wirtualizacja ? Serwerowa czy użytkownikowa ?

dotevo

Aby zrozumieć dlaczego virtio jest fajnym rozwiązaniam trzeba się najpierw zagłębić w to jak w ogóle wygląda postawienie systemu np. Androida na urządzeniu. Każdy telefon jest trochę inny. W inne miejsce może być podpięta pamięć, serial itd. Dlatego zawsze kilka tygodni zajmuje pokonfigurowanie kernela. Potem trzeba napisać HAL, który tłumaczy androidowi jak np. używać GPS. To znów wymaga czasu. Każda aktualizacja androida wymaga dopasowania tego co już jest. Często więc dużo czasu i pieniędzy wymaga takie coś - jest też Treble, ale mniejsza z tym teraz.


Konkluzja jest taka:

Różne systemy operacyjne odpalane na czymś w stylu telefonu. Jest system linux host, który przez virtio przekazuje wszystko do guesta (usb, bt, wifi itd) np. Androida i dzięki temu działa od razu bez zabawy w drivery po stronie androida.


To jest o tyle fajne, że jeśli się przyjmie na szeroką skalę to aktualizacja systemu będzie możliwa na dowolnym urządzeniu. Wymiana systemu na dowony inny używający virtio też nie będzie problemem. Może rynek telefonów zacznoe przypominać rynek PC, gdzie możesz sobie podmoenić system i wszystko śmiga.

radler

@Klopsztanga Ostatnio zacząłem się interesować troche fizyką kwantową i okazuje się, że IBM u siebie na stronie ma darmowe narzędzie do budowy obwodów kwantowych - https://quantum-computing.ibm.com/composer/files/new

Niestety póki co nic z tego nie rozumiem

Klopsztanga

@radler i za szybko nie potestujesz

Zaloguj się aby komentować