TypeError:Popen不可迭代

时间:2015-01-08 12:14:59

标签: python linux multiprocessing subprocess popen

重新编写上一个问题的程序,我遇到了麻烦。请参阅代码:

#!/usr/bin/python

import subprocess,time, timeit
from multiprocessing import Process, Queue
import re, os, pprint, math
from collections import defaultdict

Dict = {}
identifier = ""
hexbits = []
count = defaultdict(int)

def __ReadRX__(RX_info):
    lines = iter(RX_info.stdout.readline, "")
    try:
        start = time.clock()
        for line in lines:
            if re.match(r"^\d+.*$",line):
                splitline = line.split()
                del splitline[1:4]
                identifier = splitline[1]
                count[identifier] += 1
                end = time.clock()
                timing = round((end - start) * 10000, 100)
                dlc = splitline[2]
                hexbits = splitline[3:]
                Dict[identifier] = [dlc, hexbits, count[identifier],int(timing)]
                start = end 
    except keyboardinterrupt:
        pass

procRX = subprocess.Popen('receivetest -f=/dev/pcan32'.split(), stdout=subprocess.PIPE)

if __name__ == '__main__':
    munchCan = Process(target=__ReadRX__, args=(procRX))
    munchCan.start()
    munchCan.join()
    print Dict

尝试运行代码时出现以下错误:

File "./cancheck2.py", line 36, in <module>
    munchCan = Process(target=__ReadRx__, args=(procRX))
File "/usr/lib/python2.7/multiprocessing/process.py", line 104, in __init__
    self._args = tuple(args)
TypeError: 'Popen' objec is not iterable

此代码在我分离子流程并将__ReadRX__设置为单独的流程之前有效。

Coudl任何人解释发生了什么,因为我不太明白?

1 个答案:

答案 0 :(得分:2)

(procRX)没有创建元组,您必须使用(procRX,)