0

私はそのようなPythonのリストを持っています:

>>> print chunked_fsq_ids
[u'4bee84983686c9b6b794246e', u'4cbfb9f10d22ef3bc4e12c70', u'4b570230f964a520aa2228e3', u'51fd214d454ab82ac66e1211', u'4baf22eef964a5201ced3be3']

マルチスレッドプロセスを作成したい:

def getter(id):
    print id 


for fsq_id in chunked_fsq_ids:
    t = threading.Thread(target=getter, args=( fsq_id ))
    t.start()
    threads.append(t)
map(lambda t: t.join(), threads)

ただし、(ループされた) TypeError を受け取ります:

Exception in thread Thread-461:
Traceback (most recent call last):
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 808, in __bootstrap_inner
    self.run()
  File "/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/threading.py", line 761, in run
    self.__target(*self.__args, **self.__kwargs)
TypeError: getter() takes exactly 1 argument (24 given)

それぞれfsq_idが24文字なので、リストを出しているようなものです。

エンコーディングに問題がありますか、それともスレッドから何かを見逃していますか? fsq_idですUnicode。_ str(fsq_id)ただし、「fsq_id.encode('utf-8')」でも同じエラーが発生します。解決策はありますか?

4

1 に答える 1

0

末尾がありません,:

t = threading.Thread(target=getter, args=(fsq_id,))

以下は次のように解釈されます: t = threading.Thread(target=getter, args=('4', 'b', 'e', 'e', '8', '4', '9', '8', '3', '6', '8', '6', 'c', '9', 'b', '6', 'b', '7', '9', '4', '2', '4', '6', 'e')):

t = threading.Thread(target=getter, args=('4bee84983686c9b6b794246e'))
于 2013-08-25T12:43:29.750 に答える