Multithreading in Python pentru Windows si Unix

Categorii: Programare, Unix, Windows

17-Jan-2018 12:51 - 2391 vizionari

Executia mai multor task-uri in Python merge destul de bine in Unix si Windows, dar necesita indeplinirea a catorva conditii: actualizarea controalelor grafice (GUI) sa fie facuta de evenimente wxPython (nu este permisa modificarea directa dintr-un task) si taskurile trebuie sa includa o mica temporizare (cel putin de o milisecunda).

Pentru testarea executiei pe Windows, Linux si OpenBSD, am facut un program de test cu patru taskuri consumatoare de resurse de calcul plus un task de ceas ca referinta.

Cand cele patru taskuri care incarca procesoarele includ o temporizare prea mica (100 microsecunde), observ o limitare a executiei taskului de ceas in Windows, dar in Unix nu am observat sa fie vreo problema. Am facut mai multe teste si rezultatele variaza foarte mult in functie de procesorul folosit, dar pentru siguranta, taskurile trebuie sa includa o mica temporizare, cel putin 1 ms.

2tasks_2cpu 1task_2cpu 4tasks_4cpu 2tasks_4cpu

Cand numarul de taskuri consumatoare de resurse este egal cu numarul de procesoare, incarcarea este constanta.

Cand numarul de taskuri consumatoare de resurse este mai mic decat numarul de procesoare disponibile, sistemul Linux foloseste procesoarele prin rotatie si, astfel, previne incalzirea excesiva a procesoarelor.


Ultimele pagini: RSS

Alte adrese de Internet

Categorii

Istoric


Atentie: Continutul acestui server reprezinta ideile mele si acestea pot fi gresite.