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.
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)
@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 ;-)
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.
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)
@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.
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.
@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.