Pytanko. Liczenie czasu wykonywania funkcji.

0

Hejka. Mam małe pytanie odnośnie poniższego kodu.

import time
start=time.clock()
liczby_pierwsze = [2]
def czy_pierwsza(liczba):
    for dzielnik in liczby_pierwsze:
        if liczba % dzielnik == 0:
            return False
        if dzielnik * dzielnik > liczba:
            return True
    return True
 
def generuj_pierwsze(liczba):
    for i in range(2, liczba):
        if czy_pierwsza(i) is True:
            liczby_pierwsze.append(i)
    return liczby_pierwsze
koniec=time.clock()-start
generuj_pierwsze(2000000)
print(liczby_pierwsze)
print("Czas generowania: ",koniec)

Chcę, żeby wyświetlało mi tylko czas generowania liczb pierwszy, a nie ich wypisywanie.
Gdzie mam umiejscowić 'koniec=time.clock()-start'? Tam gdzie jest czy pod generuj_pierwsze(2000000)

1

Polecam bardziej metodę from time import time as tm a następnie:

[jakis blok instrukcji lub funkcja] 
czas_start = tm() - czas_start```
Skoro koniecznie chcesz to w programie wypisac zamiast wykorzystac timeit. Niemniej powinieneś to dać po generuj_pierwsze(2000000) bo to jest wykonywane w twoim programie najdłużej i zapewne to chcesz zmierzyć.

Wracając do sedna pytania, z twoim sposobem.
Czyli powinno to wyglądać tak:
```python
import time
liczby_pierwsze = [2]

def czy_pierwsza(liczba):
    for dzielnik in liczby_pierwsze:
        if liczba % dzielnik == 0:
            return False
        if dzielnik * dzielnik > liczba:
            return True
    return True

def generuj_pierwsze(liczba):
    for i in range(2, liczba):
        if czy_pierwsza(i) is True:
            liczby_pierwsze.append(i)
    return liczby_pierwsze

start=time.clock()
generuj_pierwsze(2000000)
koniec=time.clock()-start
print(liczby_pierwsze)
print("Czas generowania: ",koniec)```

1 użytkowników online, w tym zalogowanych: 0, gości: 1