0

スレッドを使用して複数の HTTP リクエストを作成しようとしています。

まず、API を呼び出すメソッドがあり、そのメソッドは引数として dict を取り、JSON オブジェクトを返します。さらに、スレッド化せずに実行すると、完全に正常に動作します。ただし、スレッドを使用しようとしたときに発生するコードとエラーは次のとおりです。

import sys
sys.path.append(r'C:/dict/path')
import apiModule
import threading

token = 'xxxx'
apiModule = apiModule.Module(token)

urls = [{'url': 'http://www.example.com'}, {'url': 'http://www.example.com/2'}]

data = []

for element in urls:
    thread = threading.Thread(target=apiModule.method(),kwargs=element)
    thread.start()
    data.append(thread)

Traceback (most recent call last):
  File "<pyshell#72>", line 2, in <module>
    thread = threading.Thread(target=apiModule.method(),kwargs=element)
  File "C:/dict/path", line 54, in method
    return json.loads(r.content)
  File "C:\Python27\lib\json\__init__.py", line 326, in loads
    return _default_decoder.decode(s)
  File "C:\Python27\lib\json\decoder.py", line 366, in decode
    obj, end = self.raw_decode(s, idx=_w(s, 0).end())
  File "C:\Python27\lib\json\decoder.py", line 384, in raw_decode
     raise ValueError("No JSON object could be decoded")
ValueError: No JSON object could be decoded

どんな助けでも大歓迎です!

4

1 に答える 1

0

@falsetruの返信を拡張するには:スレッドのドキュメントによると:

targetrun()メソッドによって呼び出される呼び出し可能なオブジェクトです

あなたの例では、メソッド " " をtarget=apiModule.method()すぐに呼び出して渡します。これにより、表示されているエラーが発生します。現在、コードは呼び出しに到達していません。methodapiModulethread.start()

于 2013-07-12T07:39:56.613 に答える