【问题标题】:Despite multiprocessing, the program is still blocked尽管进行了多处理,但程序仍然被阻止
【发布时间】:2011-10-19 11:38:01
【问题描述】:

我有一个应用程序(GUI:wxPython)。 当我点击一个树项目时,应用程序会做一些事情。 但是此时应用程序的其余部分被阻塞,直到任务完成。 没关系,因为执行在同一个进程中运行。

现在我将执行转移到一个单独的进程中(使用多处理模块) 我希望程序在任务执行期间不再被阻塞。 但它仍然被阻止。 :(

def Click(self, event):
# ....
# collect some data and create 
# mytask = [.....]
 p = Process(target=taskexecution.run, args=(mytask,))
 p.run()

【问题讨论】:

    标签: python multiprocessing


    【解决方案1】:

    试试如果你改用p.start()会发生什么。

    【讨论】:

    • 我完全想错了方向:@bob morane:您确实仍在使用run 而不是start 在主进程中运行该函数。考虑我的回答有关正确更新 GUI 的一些背景信息:这将解决您的问题。
    【解决方案2】:

    在 WxPython 中运行多个进程时,您必须使用线程安全的方法。这个Mouse vs Python blog post 非常清楚和彻底地解释了如何处理这个问题。

    【讨论】:

      猜你喜欢
      • 2019-12-20
      • 1970-01-01
      • 2016-03-17
      • 2021-05-22
      • 1970-01-01
      • 2013-12-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多