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

时间:2015-06-17 23:12:13

标签: python list popen

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

http://errors.angularjs.org/1.4.1/$injector/modulerr?p0=inspinia&p1=%5B%24injector%3Amodulerr%5D%20http%3A%2F%2Ferrors.angularjs.org%2F1.4.1%2F%24injector%2Fmodulerr%3Fp0%3Doc.lazyLoad

我的代码将创建新的subprocess.Popen对象并将它们分配给列表中的不同位置。然后我可以成功使用poll()。但在发生任何代码之前,我的新对象列表无法成功轮询。有没有办法做到这一点?我轮询列表以开始下一个过程,所以我希望所有这些功能都适用于上面的代码行。这是我在向上面的snipet分配任何内容之前要完成的任务:

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

我收到的错误是:

  

第79行,在jobQueue       print self.processList [position] .poll()TypeError:必须使用Popen实例作为第一个参数调用未绑定的方法poll()(没有取而代之)

如上所述,一旦我创建了一个新对象并将其放在我的列表中,我就没有这个问题。我不关心self.processList [0] .poll()返回什么,因为它返回一些东西并且在开始时不会爆炸。非常感谢你的帮助。

由于

1 个答案:

答案 0 :(得分:1)

您的列表实际上包含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>]