【问题标题】:Python send jobs to queue processed by PopenPython 将作业发送到 Popen 处理的队列
【发布时间】:2014-02-15 06:12:48
【问题描述】:

我目前有一个工作 python 应用程序,带有 wxpython 的 gui。我向这个应用程序发送一个文件夹,然后通过 Popen 由命令行应用程序处理该文件夹。每次我运行这个应用程序时,它都需要大约 40 分钟以上的时间才能完成。当一个作业处理时我想排队另一个作业,我不想同时提交多个作业,我想提交一个作业,而它正在处理我想提交另一个作业,所以当第一个作业完成它然后只处理下一个,依此类推,但我不确定如何去做,并希望得到一些建议。

【问题讨论】:

  • 你如何将文件夹发送到应用程序——大概是因为你说你有一个用户选择一个文件夹的 GUI?但更多细节对于获得任何合理的答案至关重要。
  • 对不起,是的,使用 ui 界面,用户选择一个文件夹并点击一个 go 按钮,所以想要像服务器/队列的情况。
  • 类似于multiprocessing.Queue 的东西听起来不错。它需要并调整您通过 Popen(或包装函数)调用的内容。
  • 听起来不错,能否请您指出一个示例的方向?

标签: python queue popen


【解决方案1】:

大概您收到了任务已完成传回 GUI 的通知,或者 GUI 正在定期检查任务的状态。在任何一种情况下,您都可以允许用户只添加到要处理的目录列表中,当您的 popen 任务完成后,从列表中取出第一个并启动新的 popen 任务,(记住删除开始了列表中的一个。

【讨论】:

  • 正如我在问题中所说,我不想一开始就提交工作列表,我想在不同时间提交工作,然后依次处理。跨度>
  • 正如我在回答中所说的 - 在您的 GUI 中构建一个列表(在 任何 时间添加到它),当当前作业完成时,如果有则开始一个新的目前更多。
【解决方案2】:

使用subprocess.call() 代替Popen,或使用Popen.wait()。

【讨论】:

  • 不,这会在后台进程运行时阻止他的 GUI 应用程序。他希望能够添加一些东西以供以后使用,而不是等到它明确完成。
猜你喜欢
  • 2021-11-02
  • 1970-01-01
  • 1970-01-01
  • 2015-05-05
  • 2021-06-13
  • 1970-01-01
  • 2019-03-27
  • 2018-01-20
  • 2018-09-27
相关资源
最近更新 更多