尽管进行了多处理,程序仍然被阻塞

发布于 2024-12-11 04:35:40 字数 337 浏览 0 评论 0原文

我得到了一个应用程序(GUI:wxPython)。 当我单击树项目时,应用程序将执行某些操作。 但此时应用程序的其余部分将被阻止,直到任务完成。 没关系,因为执行是在同一个进程中运行的。

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

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

I got an application (GUI: wxPython).
When I click on a tree item, the application will do something.
But in this time the rest of the application is blocked until the task is done.
It's ok because the execution runs in the same process.

Now I transfered the execution in a separate process (with multiprocessing module)
I expected that the program is not longer blocked during the task execution.
But it is still blocked. :(

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

魂ガ小子 2024-12-18 04:35:40

尝试一下如果使用 p.start() 会发生什么。

Try what happens if you use p.start() instead.

清风无影 2024-12-18 04:35:40

在 WxPython 中运行多个进程时必须使用线程安全方法。如何处理这个问题在这个 Mouse vs Python 博客文章

You have to use thread-safe methods when running multiple processes in WxPython. How to handle this is very clearly and thoroughly explained in this Mouse vs Python blog post.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文