Εμφάνιση αναρτήσεων με ετικέτα optimizations. Εμφάνιση όλων των αναρτήσεων
Εμφάνιση αναρτήσεων με ετικέτα optimizations. Εμφάνιση όλων των αναρτήσεων

Παρασκευή 24 Ιουνίου 2016

Python 3

Ήρθε ο καιρός για την μεγάλη απόφαση . Python 2 ή Python 3 ; 

Κατά την διάρκεια του fosscomm 2016 έκανα μια παρουσίαση σχετικά με ασύγχρονο προγραμματισμό . Στην παρουσίαση λοιπόν έθεσα το παραπάνω ερώτημα , και εξήγησα ότι η Python 3 προσφέρει σημαντικές δυνατότητες που δεν υπάρχουν στην Python 2.
Θεωρώ λοιπόν ότι πλέον δεν αξίζει τον κόπο να γράφω python2 & python3 οπότε προσωπικά
θα γράφω από εδώ και στο εξής μόνο σε python3 έτσι ώστε να μπορώ να απολαμβάνω όλες τις
δυνατότητες που προσφέρει η γλώσσα χωρίς να χρειάζεται να σκέφτομαι το αν θα λειτουργεί ο κώδικας και σε python2.

Στο branch stop-words του project Hurricane άρχισα να υποστηρίζω python3 για τις νέες εκδόσεις .
και άρχισα να σχεδιάζω νέα χαρακτηριστικά όπως
  • αφαίρεση από τα δεδομένα των λεγόμενων stop-words 
  • updated urls 
  • ο crawler θα σέβεται το robots.txt 
  • καλύτερη δομή κώδικα 

Μερικοί σημαντικοί σύνδεσμοι:
http://python3statement.github.io/
http://www.snarky.ca/why-python-3-exists
https://asmeurer.github.io/blog/posts/moving-away-from-python-2/

Δευτέρα 12 Ιανουαρίου 2015

Βελτιστιοποίηση (Python)

Πριν δυό βδομάδες δούλευα μαζί με ένα φίλο σχετικά με ένα log manager σε Python
και είχαμε το εξής πρόβλημα . Κάθε φορά που ένας χρήστης πατάει το refresh πρέπει να γίνεται ένα ajax get request το οποίο θα επιστρέφει τις αλλαγές που συνέβησαν στο αρχείο . 
Ο κώδικας ήταν ο εξής :


diffs = differ.compare(files_cache[file_name], log_file.read())
diff_l = [diff for diff in diffs if re.search(diff_regex, diff)]
file_diffs[file_name] = "".join(diff_l)

Ο οποίος έπαιρνε τις αλλαγές και τις σύγκρινε εάν ξεκινάνε με "+" ή " " :
Επειδή με το  difflib της python επιστρέφονται και οι γραμμές που δεν έχουν αλλάξει ο έλεγχος αυτός έπαιρνε γύρω στα 11 λεπτά .

Όμως κάποιος ο οποίος θα σκεφτόταν ότι ένα log αρχείο έχει ΜΟΝΟ additions γιατί λοιπόν να κάτσεις να το διαβάσεις όλο και να μην ξεκινήσεις από εκεί που σταμάτησες ;

file_diffs[file_name] = file_contents[len(files_cache[file_name]):]

Χρόνος εκτέλεσης : 0,0001 s