Άσκηση σε Python

...ασύγχρονα μαθήματα από τους guru της κοινότητας

Συντονιστής: the_eye

Re: Άσκηση σε Python

Δημοσίευσηαπό Knoxd » 09 Ιαν 2013, 00:22

Υπάρχει κάποιος τρόπος που να μπορώ να διαλέξω πόσα threads θα δημιουργήσω;
1 Γνώσεις Linux: Μέτριος ┃ Προγραμματισμού: Μέτριος┃ Αγγλικών: Πολύ καλά
2 Ubuntu 14.04 trusty 3.13.0-39-generic 32bit (en_US.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Duo CPU P8600 2.40GHz ‖ RAM 3027 MiB ‖ Quanta 3603 - HP Pavilion dv5 Notebook PC
4 nVidia G96M [GeForce 9600M GT] [10de:0649] {nvidia}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02) ⋮ wlan0: Intel PRO/Wireless 5100 AGN [Shiloh] Network Connection [8086:4237]
Knoxd
babeTUX
babeTUX
 
Δημοσιεύσεις: 115
Εγγραφή: 03 Φεβ 2011, 17:15
Εκτύπωση

Re: Άσκηση σε Python

Δημοσίευσηαπό Knoxd » 10 Ιαν 2013, 01:27

Μετά απο αρκετό ψάξιμο έγραψα τον ακόλουθο κώδικα για τον οποίο δεν είμαι καθόλου σίγουρος ότι κάνει τη δουλειά σωστά...
Ο κώδικας:
import time
import threading
def isprime(n):
if n == 2:
return 1
if n%2 ==0:
return 0
max = n**0.5 + 1
i=3
while i <= max:
if n % i == 0:
return 0
i+=2
return 1
primenubers = []
print "Please give the maximum number"
endnum = input()
start = time.time()
class ThreadClass(threading.Thread):
def myfunc():
for i in range(endnum):
if isprime(i) == 1:
primenubers.append(i)

for i in range(2):
t = ThreadClass()
t.start()
print primenubers
print "Elapsed Time: %s" % (time.time() - start)

Επίσης δεν μου εκτυπώνει τους αριθμούς..(για αυτό το λόγο έχω και αμφιβολίες για το εαν δουλεύει σωστά...)
Οποιαδήποτε γνώμη-άποψη για βελτίωση ή για το πως μπορεί να λειτουργήσει σωστά θα ήταν ευπρόσδεκτη.
1 Γνώσεις Linux: Μέτριος ┃ Προγραμματισμού: Μέτριος┃ Αγγλικών: Πολύ καλά
2 Ubuntu 14.04 trusty 3.13.0-39-generic 32bit (en_US.UTF-8, XFCE xubuntu), Windows 7
3 Intel Core2 Duo CPU P8600 2.40GHz ‖ RAM 3027 MiB ‖ Quanta 3603 - HP Pavilion dv5 Notebook PC
4 nVidia G96M [GeForce 9600M GT] [10de:0649] {nvidia}
5 eth0: Realtek RTL8111/8168/8411 PCI Express Gigabit Ethernet Controller [10ec:8168] (rev 02) ⋮ wlan0: Intel PRO/Wireless 5100 AGN [Shiloh] Network Connection [8086:4237]
Knoxd
babeTUX
babeTUX
 
Δημοσιεύσεις: 115
Εγγραφή: 03 Φεβ 2011, 17:15
Εκτύπωση

Re: Άσκηση σε Python

Δημοσίευσηαπό simosx » 10 Ιαν 2013, 02:46

Knoxd έγραψε:Επίσης δεν μου εκτυπώνει τους αριθμούς..(για αυτό το λόγο έχω και αμφιβολίες για το εαν δουλεύει σωστά...)
Οποιαδήποτε γνώμη-άποψη για βελτίωση ή για το πως μπορεί να λειτουργήσει σωστά θα ήταν ευπρόσδεκτη.


Εδώ βρίσκεσαι στο κρίσιμο σημείο για να μάθεις προγραμματισμό. Το ζήτημα είναι να ξεκινήσεις από ένα στάδιο όπου ο κώδικας λειτουργεί και κάνει κάτι,
π.χ. το thread απλά εκτυπώνει κάποιο μήνυμα. Μετά πας παρακάτω και το βάζεις να βγάζει ένα αποτέλεσμα μόνο, και συνεχίζεις.
Αν πω κάτι σε αυτό το σημείο όπου μαθαίνεις να προγραμματίζεις, τότε θα είναι επιβλαβές. Προχωράς καλά, έχεις μπροστά σου τις εντολές που χρειάζονται, και μπορείς να βρεις παρόμοια προγράμματα που χρησιμοποιούν threads, και μπορείς να τα βγάλεις πέρα. Προσπάθησε λίγο ακόμα.
προσωπικό ιστολόγιο ϗ πλανήτης Ubuntu-gr
Συμβάλετε και εσείς στο ελληνικό βιβλίο Ubuntu!
1 Γνώσεις Linux: Πολύ καλό ┃ Προγραμματισμού: Πολύ καλό ┃ Αγγλικών: Πολύ καλό
2 Ubuntu 13.10 saucy 3.11.0-031100rc1-generic 64bit (el_GR.UTF-8, Unity ubuntu)
3 AMD E-450 APU with Radeon HD Graphics ‖ RAM 3555 MiB ‖ Sony Corporation VAIO
4 AMD nee ATI Wrestler [Radeon HD 6320] [1002:9806] {fglrx_pci}
5 eth0: Atheros Inc. AR8151 v2.0 Gigabit Ethernet [1969:1083] (rev c0) ⋮ wlan0: Atheros Inc. AR9285 [168c:002b] (rev 01)
Φτιάξτε και εσείς τη δική σας υπογραφή (παραπάνω κείμενο) αυτόματα με κλικ εδώ!
simosx
Επίτιμο μέλος
Επίτιμο μέλος
 
Δημοσιεύσεις: 10334
Εγγραφή: 11 Μάιος 2008, 18:52
Launchpad: simosx
IRC: simosx
Εκτύπωση

Re: Άσκηση σε Python

Δημοσίευσηαπό lucinos » 04 Φεβ 2013, 20:59

ειδικά στην Python τα κενά μετράνε κιόλας...

Κώδικας: Επιλογή όλων
import time
import threading
def isprime(n):
    if n == 2: 
        return 1
    if n%2 ==0:
        return 0
    max = n**0.5 + 1
    i=3
    while i <= max:
        if n % i == 0:
            return 0
        i+=2
    return 1
primenubers = []
print "Please give the maximum number"
endnum = input()
start = time.time()
class ThreadClass(threading.Thread):
    def myfunc():
        for i in range(endnum):
            if isprime(i) == 1:
                primenubers.append(i)
       
for i in range(2):
    t = ThreadClass()
    t.start()
print primenubers
print "Elapsed Time: %s" % (time.time() - start)
Spoiler: show
Γνώσεις → Linux: Μέτριος ┃ Προγραμματισμός: Μέτριος ┃ Αγγλικά: Μέτριος
Λειτουργικό → Ubuntu 11.04 natty 64-bit (el_GR.UTF-8)
Προδιαγραφές → CPU: 4x Intel Core i5 CPU 750 2.67GHz ‖ RAM 3953 MiB ‖ ASRock P55DE3
Κάρτες γραφικών: nVidia G92 [GeForce GTS 250] ⎨10de:0615⎬ (rev a2)
Δίκτυα: eth0: Realtek RTL8111/8168B PCI Express Gigabit Ethernet controller ⎨10ec:8168⎬ (rev 03)
Άβαταρ μέλους
lucinos
daemonTUX
daemonTUX
 
Δημοσιεύσεις: 828
Εγγραφή: 12 Δεκ 2010, 22:04
Εκτύπωση

Προηγούμενη

Επιστροφή στο Το Σχολείο του Φόρουμ - Ασύγχρονα Μαθήματα