| Code Kitchen Allgemeines Coder-Forum rund um das Programmieren eigenständiger, ausführbarer Programme. |
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 ...
![]() |
| | #1 (permalink) |
| 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()
__________________ Steinhagelvoll | |
| | |
| | #2 (permalink) |
| Registriert seit: 01.11.03 ![]() Likes: 0 | 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. |
| | |
| HaBOT | - Anzeige - |
| |
| | #3 (permalink) |
| Themenstarter | 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 |
| | |
| | #4 (permalink) |
| Registriert seit: 01.11.03 ![]() Likes: 0 | 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. |
| | |
| | #5 (permalink) |
| Registriert seit: 09.07.05 ![]() Likes: 0 | 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... |
| | |
![]() |
| - Anzeige - | |
| |
| Themen-Optionen | |
| Ansicht | |
| |
Ä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 |