GUI-Parallelität, Threads/Multiprocessoring?

  • Guten Tag,

    gibt es eine saubere und einfache Möglichkeit mit AutoIt Parallelität zu ermöglichen?

    Insbesondere bei einer GUI-Anwendungen ist es wünschenswert, dass das GUI weiterhin reagiert, während das Script andere Funktionen ausführt.

    Ich denke das führt auf die grundlegende Frage: Wie ermöglicht man Parallelität mit AutoIt?
    Möglicherweise mit einer Controller-Datei, welche andere Dateien aufruft, welche eigenständig arbeiten und durch das Betriebssystem pseudo-/parallel laufen?
    [Wie kann man allgemein Projekte in AutoIt gestalten? - Kommunikation zwischen Prozessen - Gibt es hierzu evtl. ein TUT?]

    MfG

  • Wenn es nur um die GUI geht, dann hilft einfaches Umstrukturieren von Code. Ständige Berechnungen mit z.B. Loops werden einfach in einzelne Durchgänge aufgebrochen und deren Zustand wird global verfügbar

    Code
    Func LangeBerechnung()
    	For $i ...
    	Next
    EndFunc


    Wird zu

    Code
    Global $i
    AdlibRegister("LangeBerechnung", 1000/$FPS)
    
    
    Func LangeBerechnung()
    	...
    	$i += 1
    EndFunc


    Zum Beispiel. Es gibt abhängig von der Anwendung natürlich viel bessere Methoden.

    Was ich damit sagen will ist, dass es niemals notwendig noch praktikabel ist Multiprocessing zu benutzen, wenn es um Responsivität geht. Das ist nur, aber auch nur erforderlich, wenn es nicht mehr aussreicht, dass AutoIt nur einen CPU Kern auslasten kann.

  • Hi,

    gibt es eine saubere und einfache Möglichkeit mit AutoIt Parallelität zu ermöglichen?

    Sauber und einfach schließen sich aus. Fast immer. Möglich ist alles, bei entsprechendem Aufwand. Die Frage ist, was du mit "Parallelität" meinst.

    Insbesondere bei einer GUI-Anwendungen ist es wünschenswert, dass das GUI weiterhin reagiert, während das Script andere Funktionen ausführt.

    Das hat aber mit "Parallelität" im Sinne von Multithreading/Multitasking nichts zu tun. Btw. ist Multithreading/Multitasking bei eine "GUI"-Anwendung völlig fehl am Platz, da der Prozessor bei dieser Art der Anwendungen meist sowieso im völligen Tiefschlaf liegt.


    Möglicherweise mit einer Controller-Datei, welche andere Dateien aufruft, welche eigenständig arbeiten und durch das Betriebssystem pseudo-/parallel laufen?

    Aha...
    Pseudo-Parallel 8o
    Wenn man selbst zu faul ist (oder die Technik dafür nicht berherrscht) überlässt man andern die Arbeit, in diesem Fall dem Betriebssystem. Genau aus diesem Grund waren/sind die "neuen" Betriebssysteme so erfolgreich. Man muss nicht jedes Mal das Rad neu erfinden!
    Das wäre, gerade im Hinblick auf AutoIt, mein persönlicher Favorit, um an ein "parallel"-Projekt heranzugehen.


    [Wie kann man allgemein Projekte in AutoIt gestalten? - Kommunikation zwischen Prozessen - Gibt es hierzu evtl. ein TUT?]

    Es gibt viele Wege der InterProzessCommunikation (IPC). Ob da "einfache" Modelle dabei sind, muss jeder selbst entscheiden, ich denke, dass in den meisten Fällen simple Techniken sowohl das Debugging als auch die Stabilität positiv beeinflussen.
    Einer der vielen Links zu diesem Thema, sehr interessant die Lösungen und ein feines Beispiel dafür, wie ein Problem von mehreren Leuten zusammen gelöst werden kann: Kommunikation Skripte untereinander