XD blog

blog page

2016-03


2016-03-30 Create a video in Python from images

I was looking into making a short video based on images produced with matplotlib or pygame. Here is the results with a simple simulation used once in while in my teachings. Unfortunately, I was not able to directly produce a video I could see through the brower. I needed to convert it with MovieMaker.

And the code...


more...

2016-03-25 Les classes en programmation

Monsieur, c'est vraiment utile les classes ? On est obligé de les utiliser ? C'est le genre de questions que les étudiants posent alors qu'ils commencent leur projet. La réponse courte consiste à répondre que c'est plus pratique. Mais concrètement, ça veut dire quoi plus pratique ? D'une manière générale, on s'embarrasse rarement d'un concept s'il n'apporte rien. On peut écrire les mêmes programmes sans classes mais...


more...

2016-03-22 Accélérer Python

Python est très lent, c'est pratiquement son seul défaut avec le fait qu'il n'est pas vraiment un langage multi-thread à cause du GIL. Bref, pour accélérer le langage, on passe le plus souvent par du C et donc un langage compilé. Le plus simple est d'écrire ses calculs en C puis de s'interfacer avec le langage Python. C'est comme cela que fonctionne la librairie numpy. Une autre option consiste à écrire en pseudo langage C avec Cython. C'est l'option choisie par scikit-learn. Mais on ne réécrit pas tout, on utilise un profileur qui nous indique où le programme perd le plus de temps et on travaille spécifiquement sur cette partie. Et si on ne veut pas réécrire du code, on peut penser à changer d'interpréteur afin que le même code python soit exécuté plus rapidement. Sur ce point, il faut lire Les interpréteurs alternatifs de python. Une caractéristique des langages compilés (et non interprétés) et que les variables sont déclarées avec un type précis.

def addition(x, y):
    return x + y

La fonction précédente fonctionnera si l'addition de x et y au moment de l'exécution si cette addition à un sens ce qui ne requiert pas que ces deux variables soient du même type.

double addition(double x, double y) {
    return x + y;
}

En C, on est obligé de spécifier le type car on ne peut donner un sens au symbol + que si le type des variables est connu. Compiler le langage Python implique alors de faire de l'inférence de type... ce qu'il est parfois impossible d'accomplir à moins d'exécuter le programme. On se tourne alors vers les JIT qui propose de compiler certaines parties d'un programme en partant du code interprété lors de l'exécution.

2016-03-19 A few interesting links about Python

A few links about regular expressions, machine learning, automation:

The last page gives a list of python modules about machine learning. Among mlxtend has a really nice and detailed documentation. It includes formulas.

2016-03-13 Ranking python modules

I was puzzled was a new badge on matplotlib about Depsy. A link to dill on depsy, a link on the same module on pypi-ranking: dill. I checked pythonnet. The number of contributors is actually wrong and it is difficult to see when the last contribution was made which is one the first thing I look at before using a new module.

2016-03-03 Puzzle, Rubik's, Gaming

Here are a few link on the Rubik's cube. It started with an article on French MOOCs: French MOOC: Résoudre un Rubik’s cube grâce aux mathématiques. And I followed some links:

Lectures about how to program in Python, how to create a game: Program Arcade Games With Python And Pygame.


Xavier Dupré