在新的 subprocess.Popen 对象列表上使用 poll()

Use poll() on new subprocess.Popen object list

我正在尝试编写一些代码来轮询这样创建的 subprocess.Popen 个对象 (?) 的列表:

self.processList = [subprocess.Popen for i in range(8)]

我的代码将创建新的 subprocess.Popen 对象并将它们分配到列表中的不同位置。然后我可以成功地使用 poll()。但是在任何代码发生之前,无法成功轮询我的新对象列表。有没有办法做到这一点?我轮询列表以启动下一个过程,因此我希望所有这些功能都能与上面的代码行一起正常工作。这是我在将任何内容分配给上述代码片段之前要完成的工作:

print self.processList[position].poll()

我收到的错误是:

line 79, in jobQueue print self.processList[position].poll() TypeError: unbound method poll() must be called with Popen instance as first argument (got nothing instead)

并且如前所述,一旦我创建了一个新对象并将其放入我的列表中,我就没有这个问题。我不在乎什么 self.processList[0].poll() returns,只要它 returns 不会在一开始就爆炸。非常感谢您的帮助。

谢谢

您的列表实际上包含 Popen 类,而不是对象:

>>> processList = [subprocess.Popen for i in range(1)]
>>> processList
[<class 'subprocess.Popen'>]

您需要调用subprocess.Popen()获取对象:

>>> processList = [subprocess.Popen('ls') for i in range(1)]
...
>>> processList
[<subprocess.Popen object at 0x7f31b77e4550>]