【问题标题】:Exception in Thread:must be a sequence, not instance线程中的异常:必须是序列,而不是实例
【发布时间】:2012-11-19 04:08:40
【问题描述】:

我正在使用 python 并尝试执行一个带有 1 个参数“q”的线程,但是当我尝试执行它时发生了一个奇怪的异常,这是我的代码:

class Workspace(QMainWindow, Ui_MainWindow):
    """ This class is for managing the whole GUI `Workspace'.
        Currently a Workspace is similar to a MainWindow
    """

    def __init__(self):

        try:
            from Queue import Queue, Empty
        except ImportError:
    #from queue import Queue, Empty  # python 3.x
            print "error"

        ON_POSIX = 'posix' in sys.builtin_module_names

        def enqueue_output(out, queue):
            for line in iter(out.readline, b''):
                queue.put(line)
            out.close()

        p= Popen(["java -Xmx256m -jar bin/HelloWorld.jar"],cwd=r'/home/karen/sphinx4-1.0beta5-src/sphinx4-1.0beta5/',stdout=PIPE, shell=True, bufsize= 4024)
        q = Queue()

        t = threading.Thread(target=enqueue_output, args=(p.stdout, q))
        #t = Thread(target=enqueue_output, args=(p.stdout, q))

        t.daemon = True # thread dies with the program
        t.start()

# ... do other things here
        def myfunc(q):
            while True:

                try: line = q.get_nowait()
         # or q.get(timeout=.1)
                except Empty:
                    print('')
                else: # got line
    # ... do something with line
                    print "No esta null"
                    print line  


        thread = threading.Thread(target=myfunc, args=(q))
        thread.start()

它失败并出现以下错误:

Exception in thread Thread-2:
Traceback (most recent call last):
  File "/usr/lib/python2.7/threading.py", line 551, in __bootstrap_inner
    self.run()
  File "/usr/lib/python2.7/threading.py", line 504, in run
    self.__target(*self.__args, **self.__kwargs)
TypeError: myfunc() argument after * must be a sequence, not instance

我不知道发生了什么! 请帮忙!

【问题讨论】:

标签: python multithreading ipc


【解决方案1】:

threading.Threadargs 参数应该是一个元组,而您传递的 (q) 不是 - 它与 q 相同。

我猜你想要一个单元素元组:你应该写(q,)

【讨论】:

    猜你喜欢
    • 2022-06-16
    • 2022-06-26
    • 2022-06-29
    • 1970-01-01
    • 1970-01-01
    • 2015-03-26
    • 2021-04-08
    • 2018-12-09
    • 2019-03-21
    相关资源
    最近更新 更多