簡體   English   中英

跨多個進程共享隊列

[英]Shared queue across multiple processes

我的主要問題:您是否可以讓多個進程在一個循環中寫入一個隊列,然后使用該隊列更新GUI?

我一直在查看有關隊列和多個流程的帖子,我想知道是否有人知道使用它們的組合是否可能或有益。 我的思考過程是這樣的:由於現在所有處理器都是使用〜8核制成的,因此如果程序中有任何部分在計算上非常昂貴,那么我制作的大多數程序都應該具有訪問此功能的能力。 我希望有一個GUI同時顯示幾個不同進程的進度。 我希望每個進程都盡可能多地使用處理器,但是它們都必須同時寫入GUI,因此從我閱讀的內容來看,似乎可以使用隊列。

解決此問題的最佳方法是使多個進程通過管道與隊列通信,並讓隊列更新GUI嗎?

目前,我正在使用pyQt信號和插槽,但是由於它僅使用一個CPU內核,因此我覺得對於現代而言,這是一個不好的解決方案。

大多數GUI系統都是事件驅動的,並且期望所有事件處理都來自單個線程。 Windows事件系統,Android事件,Swing以及其他許多事件都是如此。 在GUI的情況下,使所有事件管理功能具有線程安全性的實際好處很小,而難度卻很大。 大多數大型並發系統確實將基於事件和基於線程的並發方法相結合,例如現代瀏覽器。 在您的情況下,注冊一個更新事件並由工作進程/線程將其發布到事件分派線程中要簡單得多。 這樣,您的GUI只會對其他窗口事件做出響應,因為它只會定期得到通知。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM