尽管进行了多处理,程序仍然被阻塞
我得到了一个应用程序(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 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
尝试一下如果使用
p.start()
会发生什么。Try what happens if you use
p.start()
instead.在 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.