soit le fichier fib.py:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40 | #! /usr/bin/env python3
# -*- coding: utf-8 -*-
from functools import wraps
import datetime
class ContextDecorator():
# __call__ est une méthode magique appelée quand on utilise () sur un objet
def __call__(self, f):
# bon, cette partie là suppose que vous savez comment marche un
# décorateur, si c'est pas le cas, retournez lire l'article sur S&M
# linké dans le premier paragraphe
@wraps(f)
def decorated(*args, **kwds):
# notez le with appelé sur soi-même, c'est y pas mignon !
with self:
return f(*args, **kwds)
return decorated
class TimeIt(ContextDecorator):
def __enter__(self):
self.start = datetime.datetime.now()
print(self.start)
def __exit__(self, type, value, traceback):
print((datetime.datetime.now() -self.start).total_seconds())
def fib_py(n):
if n < 2:
return n
return fib_py(n-2) + fib_py(n-1)
res = 33
@TimeIt()
def fibcaller(n=res):
fib_py(n)
fibcaller()
|
Cela se compile niquel avec la commande : nuitka –recurse-all fib.py
Cela s’exécute très bien, au passage un gain de performance de 30%…
Mon script dans le post cidessus, je le baptise scripto.py
Ca compile apres emission d’un warning:
nuitka –recurse-all scripto.py
Nuitka:WARNING:scripto.py:19: Cannot find ’pygame’ as relative or absolute import.
Nuitka:WARNING:scripto.py:20: Cannot find ’thorpy’ as relative or absolute import.
si je tente de l’executer j’obtiens
Traceback (most recent call last):
File "/home/moi/Bureau/bidouillages/scripto.py", line 19, in <module>
import pygame
ImportError: No module named pygame
Il ne trouve pas les lib importés.
Si un jour je veux importer plein de lib stierce, je vais quand meme pas toutes aller les dupliquer dans le repertoire courant, donc il faut une combine à base de pythonpath j’imagine.