juz_tu-bylem
Mirki z pod tagu #programowanie i #python

Czy da się jakąś zmusić skrypt w pythonie żeby używał wszystkich rdzeni procesora?
Napisałem sobie program i jak go zapuszczam to obciąża mi w 100% tylko jeden rdzeń. Czy program musi być napisany stricte pod wielowątkowość czy da się zrobić jakaś tak żeby używał wszystkich rdzeni?

Od razu dodam że nie mam dużego doświadczenia w programowaniu (a raczej prawie wcale).
Z góry dzięki za odpowiedzi.
1
  • Najlepsze
  • Wszystkie komentarze
skew
@juz_tu-bylem: Możesz przerobić krytyczne elementy aktualnego programu na wielowątkowe.
6
stacktrace
stacktrace
@juz_tu-bylem: A jak sobie wyobrażasz, że system operacyjny lub wirtualna maszyna wykorzysta rdzenie dla jednowątkowego procesu?
3
skew
2
Ostah
@juz_tu-bylem: 2 lata temu próbowałem i z tego co pamiętam - na Windowsie nie da rady, na Linuxach tak
1
skew
@kochmap: No niestety, działa to jednak np. w IronPython. Można też ewentualnie użyć multiprocessing (https://docs.python.org/2/library/multiprocessing.html) lub ręcznie tworzyć osobne procesy za pomocą subprocess.
1
benwatkins
@juz_tu-bylem: Jeżeli to problem który w łatwy sposób da się podzielić to napisz program w pythonie który odpala kilka instancji pythona i bedziesz mieć namiastkę multithreadingu, ale wgl do bardziej czasochłonnych zadań obliczeniowo polecam C i biblioteka openMP z tą biblioteką robi się bajecznie prosto
1
juz_tu-bylem
@stacktrace: Panie, zielonego pojęcia nie mam więc się pytam :) Czyli musi być program pisany pod wielowątkowość?
0
kochmap
@juz_tu-bylem:
@skew:
tylko threading tworzy zielone wątki. W żadnym wypadku nie będzie wykorzystywać więcej niż jeden rdzeń na raz.
0
kochmap
@skew: dokładnie. Niestety kiepsko z wielowątkowością w zwykłym pythonie. Komunikacja między procesami jest czasochłonna. Ewentualnie tak jak mówisz Iron bądź Jython.
0