Działanie wątków

0

Cześć,
Tworzę grę w szachy w pythonie, ostatnio gdy prosiłem o ocenę ktoś poradził mi aby obliczenia które wykonuje komputer aby wykonać ruch przenieść do innego wątku. Poczytałem trochę o nich ale nie wiem czy dobrze rozumiem. Samo stworzenie i użycie nowego wątku nie skróci oczekiwania na ruch komputera, musiałby wykonywać obliczenia gdy użytkownik jest czymś "zajęty" (np. animacją). Czy dobrze myślę?

2

W pythonie kod, która działa na CPU (czyli twój przypadek) będzie działał tylko na jednym wątku (poczytaj o GIL). Jeśli chcesz liczyć coś na wielu wątkach procesora to poczytaj o https://docs.python.org/2/library/multiprocessing.html . Inna sprawa, że cokolwiek napiszesz to i tak będzie wolne przez to jak działa python. Możesz próbować optymalizować kod, tak żeby działał szybciej na jednym wątku, możesz popróbować z PyPy. Używanie multiprocessingu to ostateczność

3

Jeżeli algorytm pozostanie taki sam, to obliczenia nie przyspieszą.

Zakładając, że tworzysz gui to niepożądanym jest, żeby aplikacja freezowała się podczas obliczeń. Skoro użytkownik i tak ma czekać, to lepiej dać mu animację coby się nie niepokoił. Możesz mu też dać jakieś opcje do poklikania sobie po planszy, przejrzenia historii ruchów czy rysowania po planszy.

2

Taką radę dają zwykle ci, co nigdy profesjonalnie z wątkami nie mieli do czynienia.
Lepiej poczytaj o algorytmie alfa-beta.

Tak wątki pozwalają robić obliczenia równolegle, ale problemy synchronizacji zwykle przerastają programistów nawet z wieloletnim doświadczeniem (najgorsi są ci, przekonani, że potrafią, a popełniają podstawowe błędy i mówią prosto w twarz "przecież działa").

Z tego co mi wiadomo, w python ciężkie obliczania po prostu przenosi się do innego procesu.

0

Dzięki za odpowiedź :)
mój algorytm wygląda tak:
[https://pastebin.com/bXwSQhPb]
Używam alpha-beta pruning ( albo tak mi się tylko wydaje :D)
Tutaj cały program:
[https://github.com/Suchy702/Szachy]

W pythonie kod, która działa na CPU (czyli twój przypadek) będzie działał tylko na jednym wątku (poczytaj o GIL).

Może coś źle rozumiem ale w moim programie można stworzyć osoby wątek nawet to robiłem, tylko mój program wtedy totalnie świrował bo tak jak napisał @MarekR22 wątki były żle używane.

Macie jakiś pomysł jak to przyśpieszyć ?

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