Ich beginne mit Threads in Python, und versuchen, eine Zusammenführung zu implementieren, wo zu Beginn der Auftrag in 2 Threads aufgeteilt wird. Ich verwende collections.deque
, itertools.islice
, threading.Thread
.Sortieren scheint langsamer mit 2 Threads anstelle von 1
Ich erstelle zwei Threads am Anfang, sie machen jede Hälfte der Arbeit normalerweise, dann schließe ich mich ihnen an und füge das Ergebnis zusammen. Aber ich habe bemerkt, dass es viel länger dauert (fast 2 mal so lang) mit zwei Threads als wenn ich es normalerweise mache.
Wie kann das möglich sein? Here is a link to the code, ich die wichtigsten Teile hier reproduzieren kann, wenn nötig (ich auch diese Frage auf Code Review SE geschrieben, und ich mag lieber diese kurz halten)
Ist es zu this Frage verknüpft (scheint in C ein ähnliches Problem zu sein ++)? Vielen Dank.
Mögliche Duplikate von [Python Multi-Threading langsamer als seriell?] (Http://stackoverflow.com/questions/10789042/python-multi-threading-slower-than-serial) –
Warum der Downvote? – BusyAnt
Obwohl CPythons GIL das Multithreading beschränkt, können Sie immer noch 'multiprocessing' verwenden. –