[Python] Kennis gezocht

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Michael -

Michael -

04/07/2016 20:10:49
Quote Anchor link
Hallo,

Misschien dat dit topic thuis hoort in de koffiehoek, maar een tijd geleden ben ik begonnen met Python omdat ik een executable wou hebben die mij helpt met mijn werk. Hierin ben ik mij gaan verdiepen en heb een hele stap gemaakt, maar ik kom duidelijk kennis te kort om het programma vloeiend en vlekkeloos te laten lopen (Is langzaam, freeze momenten, etc).

Zijn er hier mensen die gevorderde kennis hebben van Python en mij hiermee willen helpen?
Ik vraag het hier omdat ik tot nu toe alleen engelse forums kan vinden (Stack***, Dani***) en dit toch de communicatie lastig maakt.

Er staat eventueel een vergoeding tegenover, maar ik wil er ook zelf van leren dus niet compleet uit handen geven.

Michael
 
PHP hulp

PHP hulp

24/11/2024 16:51:40
 
Michael -

Michael -

06/07/2016 17:39:55
Quote Anchor link
*schop*
 
Michael -

Michael -

07/07/2016 17:43:11
Quote Anchor link
Het hoeft niet perse jijzelf te zijn, je mag me ook in contact brengen met iemand die je kent.
Links naar Nederlandse fora's mag ook.
 
- Ariën  -
Beheerder

- Ariën -

07/07/2016 18:45:51
Quote Anchor link
Een forum van hoog niveau die je kan raadplegen is Gathering of Tweakers. Daar zitten veel experts die vast en zeker advies kunnen geven.
 
Bart V B

Bart V B

08/07/2016 13:20:56
Quote Anchor link
Waarom deel je geen stukken code en kijk je of antwoorden op komen?
Immers, we zitten hier met z'n allen om iets te leren en kennis over te brengen. :)
Mijn kennis van python is niet gevorderd maar interesse in problemen/puzzels oplossen is er uiteraard wel.
Ik kan me bijna niet voorstellen dat er niet meer mensen hier rondkijken die enig kennis heeft van python.

Dus, suggestie: kom met relevante code en probleem. (Tis net een php vraagstuk)
 
Michael -

Michael -

08/07/2016 14:24:31
Quote Anchor link
@Arien, Bedankt voor je advies! (Wist je trouwens dat je naam niet wordt weergeven in activiteiten?)

@Bart, Omdat dit een PHP forum is. Vragen over gerelateerde zaken als HTML, CSS, JS, SQL is daar aan toe, maar Python valt wel naast de boot lijkt mij ;-)
Even de code tonen is geen optie. Het programma werkt en het is niet zozeer dat ik ergens vast loop, maar ik wil het optimaliseren en daarin komt mijn kennis te kort (heb alleen wat video tutorials gevolgd).

Om er toch even verder op in te gaan, mocht je (of iemand anders hier) misschien kunnen helpen;
In het programma kies je een map met bestanden en deze worden vergeleken met een map afbeeldingen.
Die map met afbeeldingen bevat 175.252 bestanden in 385 mappen met een grootte van bijna 3.8 GB.
Om de snelheid te verhogen heb ik een configuratie scherm waarin ik aanvink in welke mappen deze moet zoeken (lang niet alle mappen zijn van toepassing) en dit wordt opgeslagen in een configuratie bestand.

Dus het programma zoekt in de mappen die zijn aangevinkt en als er overeenkomsten zijn worden deze afbeeldingen als een soort van galerij weergegeven in een nieuw venster. Onder de afbeeldingen staat de naam van het bestand en er moet nog een link naar een PDF aan worden toegevoegd (als deze beschikbaar is).

Toevoeging: Ook moeten de bestanden waarvan geen overeenkomst is worden getoond in een lijst (onderaan de gallerij bijvoorbeeld)

Op het moment dat ik start met zoeken opent een nieuw venster en deze bevriest voor heel wat seconden (ik hebt een limiet van afbeeldingen nu verkort om geen minuten te hoeven wachten).
Dit bevriezen wil ik voorkomen en ik wil het zoeken sneller maken. Het zoeken wordt ook vertraagd omdat de afbeeldingen op een server staan dus misschien dat het handig is deze, wanneer een overeenkomst is, te downloaden op de lokale schijf zodat deze de volgende keer sneller wordt weergegeven.

Het programma is dus in principe bijna klaar maar er is niet mee te werken ;-)
Gewijzigd op 08/07/2016 14:26:44 door Michael -
 
Ozzie PHP

Ozzie PHP

08/07/2016 14:54:47
Quote Anchor link
Ik heb totaal geen verstand van Python, laat ik daar maar mee beginnen dus misschien slaat wat ik zeg helemaal nergens op ...

Je hebt het over ruim 175.000 bestanden in 385 mappen ... en die staan ook nog eens op een server. Dan lijkt het mij niet zo heel raar dat de boel vastloopt. Is het een idee om niet de bestanden zelf te doorzoeken, maar alle bestandsnamen in een database te zetten en dan die database te doorzoeken? In plaats van 175.000 relatief zware file-bewerkingen uit te voeren, ben je dan met het uitvoeren van 1 query wellicht al klaar. Misschien een idee? En zodra je dan een plaatje erbij zet op de server, dan laat je ook automatisch de titel aan de database toevoegen.
 
Bart V B

Bart V B

08/07/2016 15:24:08
Quote Anchor link
Quote:
Vragen over gerelateerde zaken als HTML, CSS, JS, SQL is daar aan toe, maar Python valt wel naast de boot lijkt mij ;-)

Naja, Python doet het best goed met html, CSS e.d, zelfs een een webserver er mee maken kan.. ;)
Dus op zich is een python vraag nog niet eens zo zeer buiten de boot.

Om even wat beter een beeld te krijgen, begrijp ik het goed dat je mappen met plaatjes (highres) uitleest, en deze uitpoept op je scherm?
In dat geval zou een database misschien handig zijn, hoewel dat weer lastig is te combineren met een standalone programma. Misschien een sqlite database een optie?

Andere optie is om de plaatjes in een laag resolutie te zetten en deze te vergelijken op het moment dat je die nodig hebt en dan ermee te doen wat je wenst. (soort van cache)

Het is maar even in theorie he.
 
Michael -

Michael -

08/07/2016 16:00:35
Quote Anchor link
@Ozzie; klopt, misschien is het wel een idee om deze in een database te gooien, maar dat gaat mijn kennis te boven. Er komen namelijk ook nieuwe plaatjes bij dus hij moet wel af en toe geüpdatet worden.
Met PHP zou je dan een cronjob kunnen doen, maar met een executable zou je dat dan pas op het moment kunnen doen dat het programma word geopend, wordt ook de boel vertraagd. Dan zou ik weer een programmaatje in de achtergrond moeten draaien die af en toe die taak uitvoert of zo.

@Bart; Dat klopt, het is wel een server taal ;-)
De plaatjes zijn gelukkig niet highres. De plaatjes zijn tussen de 10 en 36 kb ongeveer. Het zijn namelijk al thumbnails en dat is voldoende. Wat is de beste manier om een database/cache achtig iets te maken waarin die dan kan zoeken? Dan gaat het zoeken i.i.g. al snel, dan moeten alleen de plaatjes nog worden geladen. Maar als ik de structuren van de eerste map en de tweede map in een database heb en deze eenvoudig kan updaten, zou dit denk ik al een hoop schelen.
 
Bart V B

Bart V B

08/07/2016 16:18:27
Quote Anchor link
Zoiets?
http://sebastianraschka.com/Articles/2014_sqlite_in_python_tutorial.html

Ik zou denk ik in dit geval sqlite inzetten.
Dit kan lokaal gebruikt worden, en is immer enkel bedoeld om je zoeken sneller te maken.
Je kan het database bestand dan overal gebruiken. Kwestie van copy/past.
 
Michael -

Michael -

08/07/2016 17:29:06
Quote Anchor link
@Bart bedankt voor de link! Ziet er super uit (Zijn projecten ook trouwens!).
Het tweede punt is dan hoe update ik het bestand, wanneer maak ik die database aan (Bij het openen van het programma? Gelijk updaten? Is dit niet alsnog traag? Of via een apart programmaatje updateDatabase.exe waarin ik ook de nieuwe paden kan toewijzen, want van de eerste map verandert deze (nieuwe datum in de naam). Het wordt nog wel een hele opgave voor iemand die nog maar een paar weken hiermee werkt ;-) Hoever is jouw ervaring en kennis en heb je al leuke projecten gemaakt? Misschien dat je me wil en kan helpen met dit project.
 
Bart V B

Bart V B

08/07/2016 17:56:51
Quote Anchor link
Om eerlijk te zijn ben ik alleen maar aan het spelen geweest met python.
Ik heb een orange pi gekocht om daarmee uiteindelijk een python applicatie te maken om mijn aquarium mee te monitoren. Vooral het GPIO verhaal vind ik erg interessant omdat daar sensoren e.d. op aangesloten kunnen worden. Dat werkt in python erg makkelijk. Mijn eerste gedachte is/was om het webbased te maken, maar nu ik dit topic zo zie en ook het idee van sqlite erbij benoem is het misschien niet eens zo'n slecht idee om een stand alone programma te maken. ;) Dus jou vragen brengen mij op creatieve ideeën.

Overigens heb ik verder nog niet echt iets concreets gemaakt met python, uitsluitend mee gespeeld.

Maar goed, even naar jou topic terug:
Sorry dat ik even doorvraag, maar is het een idee om op de server sqlite te zetten?
Want dan zou je met een cronjob via een simpel script (python?) het updaten van je database bestand al kunnen oplossen.
Je zou dan het database bestand kunnen kopiëren naar je eigen pc.
Volgens mij kan je met python iets van ftplib om een optie te hebben ala ftp iets op te halen, dus dan zou je alleen in de applicatie bij opstarten de nieuwe database hoeven downloaden.
https://docs.python.org/3.0/library/ftplib.html
voor versie 2.7 (weet niet welke je gebruikt) kan je 3.0 in de link veranderen naar 2.7 :)

Willen helpen altijd, alleen kunnen helpen is qua tijd wat lastiger.
Vragen beantwoorden/meedenken kan altijd he. :P
 
Michael -

Michael -

08/07/2016 18:56:19
Quote Anchor link
Super dat je meedenkt en dat ik indirect jou weer op ideeën breng ;-)
Het programma moet draaien op de PC van het werk dus ik heb geen mogelijkheden om hier in het bedrijf een server hiervoor te gaan opzetten. Online kan natuurlijk ook niet, want dan heb ik geen toegang tot de schijf waar de afbeeldingen op staan. Het zou dus vanaf de pc moeten waarop het programma draait. Eventueel een background-process o.i.d.
 
Bart V B

Bart V B

08/07/2016 19:58:43
Quote Anchor link
hmmm.. Dat maakt het wat lastiger..

Misschien is je ingeving met een aparte applicatie om te updaten dan nog niet eens zo slecht bedacht.
Dat in de achtergrond laten doen is een optie. Ik neem aan dat het niet in real time hoeft te bekijken of er nog iets nieuws is. Dan hoeft het niet eens met een stand alone applicatie te zijn.
Als je een python script maakt die dat doet:

Bestanden bekijken/vergelijken -> database updaten

dan kan je eventueel het met een cronjob oplossen.

Je uiteindelijke applicatie om de dingen te bekijken e.d. is al klaar. Alleen aan de database koppelen is dan nog nodig.
Gewijzigd op 08/07/2016 20:00:13 door Bart V B
 
Michael -

Michael -

05/08/2016 12:00:28
Quote Anchor link
@Bart V B en anderen die kunnen/willen helpen uiteraard.
Ik ben nog eens aan de slag gegaan met dit project en heb intussen een updater.py met 3 entry's waarin je de gewenste directory kiest en deze gegevens worden vervolgens in een sqlite database opgeslagen.
Nou was ik heel erg aan het struggelen met INSERT en UPDATE in een glob-loop (UPDATE als bestandsnaam bestaat anders INSERT). Dit werkt goed, maar duurt erg lang omdat een insert wordt gedaan, bestand gesloten, bestand geopend, insert, bestand sluiten, etc. en dat meer dan 2000 keer voor 1 directory (de 2e is nog veel groter) :-) Nou vond ik iets over BEGIN en END TRANSACTION of een executemany.
Er kan dan gewoon DELETE FROM *TABLE* en VACUUM worden gedaan (TRUNCATE kennen ze niet :-)) en dan weer gevuld worden.

Nou ben ik bezig met executemany, wanneer ik eerst een dictonary maak van de glob en deze wil ik dan in een keer uitvoeren, maar tot mijn grote ergernis wil dit nog niet werken. Heb jij hier enige ervaring mee of ben je bereid mee te helpen/denken? Vanavond kan ik hier wel wat code plaatsen.
Gewijzigd op 05/08/2016 12:03:15 door Michael -
 
Thomas van den Heuvel

Thomas van den Heuvel

05/08/2016 14:11:01
Quote Anchor link
Je bent nu al met oplossingen bezig, maar het vraagstuk is mij niet duidelijk.

Hoe wil je in/door deze afbeeldingen kunnen zoeken? Welke criteria gebruik je? En wat ben je uiteindelijk aan het maken - een soort van fotogalerij, een archief, iets anders? Moet dit een standalone applicatie zijn? Hoe vaak verandert de samenstelling van deze collectie en hoe ingrijpend (met name als je sqlite gebruikt, als je overwegend uit de database leest kan dit efficiënt zijn maar als je ook veel schrijft dan is sqlite wellicht toch niet zo'n verstandige keuze)? Ik kan mij er geen voorstelling van maken.

Je komt ook een beetje via de zijdeur binnen met de vraag om Python-kennis. Niet zozeer omdat dit voornamelijk een PHP-forum is maar meer omdat je er verder weinig tot niets bijvertelt :p.
 
Michael -

Michael -

05/08/2016 15:27:17
Quote Anchor link
Ik ben een half jaar geleden begonnen met Python omdat we op het werk tegen een "probleem" aan liepen.
Wij maken machine programma's en slaan deze op onder een nummer. Dit nummer zou terug moeten keren, maar het gebeurt nog al eens dat het programma een nieuw nummer krijgt waarna we het programma omdat moeten maken want we weten niet meer onder welk nummer die is opgeslagen.
Van deze programma's wordt ook een thumbnail gemaakt en zijn te vinden op de server. Hier zijn er nu meer dan 175.000 van. (Dit betekent niet dat deze moeten worden weergegeven, dat blijft beperkt tot tientallen).
Aangezien het programma en de thumbnail allebei dat nummer als naam hebben dacht ik die eenvoudig aan elkaar te kunnen linken en weer te geven.
Dit eerste programma was totaal niet bruikbaar omdat het heel erg lang duurde voordat er een aantal afbeeldingen waren geladen. Met meer dan 20 afbeeldingen liep het compleet vast.
Naar een aantal maanden heb ik de ijskast weer open getrokken en ben ik nu bezig dit programma te splitsen.
Er komt een updater en een viewer. De updater slaat de bestanden in de programma map op in een database, slaat de afbeeldingen op in een database en zou vervolgens relaties moeten opslaan in de database. Deze relaties wil ik dan weergeven in de viewer.

Toevoeging op 05/08/2016 15:49:30:

De gegevens hoeven niet vaak geüpdatet te worden. Eens per maand/half jaar is prima. Ook sqlite kan, wat ik gelezen heb, makkelijk tienduizenden records in een seconde toevoegen, maar dan zou het dus wel met een transaction of executemany moeten gaan, maar mijn eigen kennis hiervan is 0,1 dus het is vooral wat ik lees en door het te doen.
 
Bart V B

Bart V B

06/08/2016 09:45:20
Quote Anchor link
Quote:
Nou ben ik bezig met executemany, wanneer ik eerst een dictonary maak van de glob en deze wil ik dan in een keer uitvoeren, maar tot mijn grote ergernis wil dit nog niet werken. Heb jij hier enige ervaring mee of ben je bereid mee te helpen/denken? Vanavond kan ik hier wel wat code plaatsen.

Laat eens wat code zien..
Totaal geen ervaring mee, maar houd wel van een stukje puzzelen.
En we leren er ook weer wat van.
 
Michael -

Michael -

08/08/2016 17:53:20
Quote Anchor link
Bart V B op 06/08/2016 09:45:20:
Laat eens wat code zien..
Totaal geen ervaring mee, maar houd wel van een stukje puzzelen.
En we leren er ook weer wat van.

Ik heb de hele code van de updater in pastebin gezet.
Het gaat in dit geval dan over regel 241-243
237-252 is hoe ik het op dit moment doe, maar ik wil dus kijken of er nog snelheidswinst te halen is met executemany of transactions.
De fout die ik krijg met regel 241 en 243 is:
Quote:
TypeError: function takes exactly 2 arguments (1 given)

De fout die ik krijg met regel 242 is:
Quote:
sqlite3.ProgrammingError: Incorrect number of bindings supplied. The current statement uses 2, and there are 3 supplied.
 
DavY -

DavY -

08/08/2016 18:17:57
Quote Anchor link
Zelf ook geen ervaring met Python, dus ik probeer mee te denken. Als ik googled op deze fout:

Quote:
TypeError: function takes exactly 2 arguments (1 given)


Dan kom ik hier uit.

Waarschijnlijk heeft de fout van regel 242 met regel 241/243 te maken. Hopelijk heb je hier wat aan.
 
Michael -

Michael -

11/08/2016 19:26:54
Quote Anchor link
Bedankt voor de vele helpende reacties. De vraag is niet meer van toepassing. Ik dacht dat de foutmelding iets met tuples te maken had, maar misschien ook met de multidimensionale dictonary. Ik kan hier niet veel over vinden en heb tevergeefs van alles geprobeerd.
Wel ben ik wijzer geworden dat sqlite automatisch transactions toepast en ook automatisch commits uitvoerd. Ik heb daarom de commits verwijderd en het wegschrijven gaat nu in één keer.
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.