乡下人产国偷v产偷v自拍,国产午夜片在线观看,婷婷成人亚洲综合国产麻豆,久久综合给合久久狠狠狠9

  • <output id="e9wm2"></output>
    <s id="e9wm2"><nobr id="e9wm2"><ins id="e9wm2"></ins></nobr></s>

    • 分享

      Python + PyQt架構:多線程入門示例

       lgk88888 2018-12-15

      Python + PyQt架構:多線程入門示例

      在大型軟件開發(fā)過程中,多線程是一種經常使用的編程技術。使用多線程技術,可以將耗時較大的代碼放到單獨的線程中處理,避免軟件界面程序的假死現象,提高軟件的運行效率。

      下面兒給出一個在Python語言中使用PyQt界面庫編寫多線程程序的入門例子。

      例子說明

      該例運行界面中包含三個按鈕控件和一個文本框控件,如下圖所示:

      029-1

      點擊“創(chuàng)建新線程”按鈕,可以創(chuàng)建一個子線程,在該線程中每隔500ms產生一個自加1的數,將該數值顯示在文本框中,同時,文本框中也顯示了當前線程的序號及ID號,可多次點擊該按鈕來創(chuàng)建多個子線程。上圖文本框中顯示的是創(chuàng)建了四個子線程的情況。

      點擊“停止所有線程”可以停止所有已經創(chuàng)建的子線程。

      點擊“退出程序”按鈕則退出當前程序。

      線程類的代碼實現

      PyQt中創(chuàng)建一個基于QThread類的線程類——MyThread,具體實現代碼如下圖所示:

      029-2

      對上述代碼說明如下:

      15行,定義一個信號dispSignal,其傳遞的參數類型為str字符串類型。

      16-19行,類的初始化函數,主要定義兩個成員變量numberkeepRunning,分別表示當前線程的序號和當前線程是否運行的標志。其中,number在線程類的實例定義時由主線程(調用者)傳入,keepRunning初始化為True。

      21-22行,定義一個stop函數由主線程調用,在函數內部設置keepRunning的值為假,用以停止該線程的運行。

      24-31行,重寫run函數,這是PyQt線程中的主要代碼實現部分,當在主線程中調用線程類的start函數時會自動運行該函數。在該函數中,首先獲得該線程的id,然后在while循環(huán)中每隔500ms產生一個自加1的變量i(初始值為0),然后將線程的序號、id號和i的值組合成一個字符串信息通過信號dispSignal發(fā)送出去。當keepRunning的值為假時退出while循環(huán)。

      因此,可在主線程中定義一個槽函數對應信號dispSigna用以處理信息的顯示。

      軟件界面類的代碼實現

      定義一個基于QWidget類的窗口類——MyWnd類,作為軟件運行的主界面窗口類。具體實現代碼如下圖所示:

      029-3

      對上述代碼說明如下:

      34-55行,類的初始化函數,定義界面的布局。其中,第53行,定義了一個列表變量allThreads,存儲所創(chuàng)建的線程。

      57-61行,點擊“創(chuàng)建新線程”按鈕時對應的槽函數,在該函數中定義一個新的線程實例thread,然后將線程的dispSignal信號關聯到slotDisplay函數并啟動該線程,最后將thread添加到列表allThreads中。

      63-67行,點擊“停止所有線程”按鈕時對應的槽函數,在該函數中對列表allThreads中所有的線程調用stop函數停止線程的運行并刪除整個列表。

      69-70行,對應線程中dispSignal信號的槽函數,在該函數中將線程中傳遞過來的參數(線程的序號、id號和i的值)在文本框中逐行進行顯示。

      應用程序測試代碼實現

      上面已經定義了線程類和主界面窗口類,在主程序中調用這兩個類就可以完成前面例子的運行界面程序。具體實現代碼如下圖所示:

      029-4

      備注

      這是一個比較簡單的多線程編程入門示例,僅僅介紹了怎樣在Python語言中使用PyQ界面庫創(chuàng)建、運行及停止一個線程,而對于其它諸如線程間同步等技術本例均未涉及。


      如果你覺得這篇文章對你有用的話,抖抖小手點個贊吧。

        轉藏 分享 獻花(0

        0條評論

        發(fā)表

        請遵守用戶 評論公約

        類似文章 更多