Hackerboard Wiki HaboBlog
Hackerboard bei Facebook Hackerboard bei Google+ Hackerboard bei Twitter

[HaBo]

 
Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme.

Mit Python Dual Core nutzen

Diskussion: Mit Python Dual Core nutzen im Forum Code Kitchen, in der Kategorie Software Home; Anzeige Ich will mit Python beide Prozessoren nutzen und habe zum Test mal ein kleines Primzahlprogramm geschrieben: Code: import thread ...

Antwort
Alt 30.01.09, 13:29   #1 (permalink)
 
Benutzerbild von Stein
 
Registriert seit: 10.10.05
Stein Leistung: Facit NTK
Stein eine Nachricht über ICQ schicken
Likes: 0
Standard Mit Python Dual Core nutzen

Anzeige

Ich will mit Python beide Prozessoren nutzen und habe zum Test mal ein kleines Primzahlprogramm geschrieben:

Code:
import thread
import time
def is_prim(n):
    if n % 2 == 0:
        return False
    i = 3
    while i * i <= n:
        if n % i == 0:
            return False
        i += 2
    return True
def check_bereich(start, stop):
    for i in range(start, stop):
        if is_prim(i):
            #print i                                                                                                                                           
            pass
    global a
    a -= 1
a = 3
check_bereich(2,40000)
print time.clock()
thread.start_new_thread(check_bereich, (2,20000,))
thread.start_new_thread(check_bereich, (20001,40000))
while a > 0:
    pass
print time.clock()
Theoretisch müsste der Teil mit den 2 Prozessoren doch schneller sein oder? Hat einer ne Ahnung wo der Fehler ist?
__________________
Steinhagelvoll
Stein ist offline   Mit Zitat antworten
Alt 30.01.09, 14:39   #2 (permalink)
 
Registriert seit: 01.11.03
lagalopex Leistung: Facit NTK
Likes: 0
Standard

Die Primzahlprüfung dauert für große Zahlen länger als für kleine, also wird der erste Thread weit vor dem zweiten fertig sein. Zudem hast du im Hauptprogramm eine Endlosschleife, die auch noch ordentlich Rechenleistung vergeudet.
lagalopex ist offline   Mit Zitat antworten
   
HaBOT
 
- Anzeige -

Werbung ist gerade online    
Alt 30.01.09, 17:11   #3 (permalink)
Themenstarter
 
Benutzerbild von Stein
 
Registriert seit: 10.10.05
Stein Leistung: Facit NTK
Stein eine Nachricht über ICQ schicken
Likes: 0
Standard

Hast recht ich hab den Code mal ein wenig umgebaut und es werden beide Threads gleichzeitig ausgeführt. Die Endlosschleife muss sein denn wenn ein Theard zuende ist würde er sonst das ganze Programm beenden. Wenn du ne elegantere Lösung hast, bitte sag es mir. Ich habe es nur wie im Openbook gemacht
__________________
Steinhagelvoll
Stein ist offline   Mit Zitat antworten
Alt 30.01.09, 18:31   #4 (permalink)
 
Registriert seit: 01.11.03
lagalopex Leistung: Facit NTK
Likes: 0
Standard

Also zumindest mal ein sleep in die Schleife setzen. Und es müsste auch die Möglichkeiot geben, auf einen Thread zu warten, dafür kenn ich mich aber zu wenig mit python aus.
lagalopex ist offline   Mit Zitat antworten
Alt 30.01.09, 23:25   #5 (permalink)
 
Registriert seit: 09.07.05
ravenstorm04 Leistung: Facit NTK
Likes: 0
Standard

Wenn ich mich nicht irre, ist bei Python in einer Interpreterinstanz stets der GIL und nochmal GIL aktiv.
Dadurch sind mehrere Threads auf mehreren Cores mit dem Modul thread / threading nicht möglich.
Es gibt aber das Modul multiprocessing ab Version 2.6(?). (Davor hieß es afair pyprocessing ). Damit sollts möglich sein, aber dann wird jeder "Thread" als eigenständiger Prozess geführt; heißt Thread + Interpreter. Bei vielen Threads gibts damit wohl großen Overhead.


mfg

ps. Beim Modul thread scheints keine fertige Möglichkeit zu geben, Threads auf einander warten zu lassen. Das Modul threading bietet dafür die Methode .join() an.

pps. Ich hoffe, dass das so noch aktuell ist mit dem GIL und Mehrkernern...
ravenstorm04 ist offline   Mit Zitat antworten
Antwort
   
- Anzeige -

Werbung ist gerade online    

[HaBo] » Software Home » Code Kitchen » Mit Python Dual Core nutzen
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind aus
Pingbacks sind aus
Refbacks sind aus


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Dual Core... Mailyn Kaufberatung 4 19.09.07 19:44
Dual Core Prozessoren Takten nur 600/800/1000 Mhz! Falscher Treiber Muskatnuss Linux/UNIX 21 29.04.07 17:48
Der "AMD 64 Dual Core" Thread link Hardware Probleme 2 27.12.05 19:27
MSI Neo 4 Platinum Dual Core fähig ? McZak Hardware Probleme 0 18.08.05 19:00
AMD stellt neuen Dual-Core-Chip vor non News & Ankündigungen 6 02.08.05 12:00


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 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61