私は次の問題があります。私はマルチスレッドを使用してAPI呼び出しを処理するために私のコードをリファクタリングしようとしています。私は写真のペアを必要とするAPIを介してLSTリストを受け取り使用して、それを処理タプルのリストのPython pool.map
lst = [('/Users/sth/photo1.jpg',
'/Users/sth/photo2'),
('/Users/sth/photo1.jpg',
'/Users/sth/photo3'), (...)]
機能:私のコア・データは、次の形式でタプルの単純なリストです。結局のところ、各ペアに対して単一の番号が返されます。これまでは、ループを使用して関数にタプルを入れ、前述の数を生成しています。私は、1つのプロセスが私のリストの一部を取り、バッチ内のタプルの関数を呼び出すという方法で全体の並列化を並列化したいと思います。私はマルチプロセッシングモジュール用のプール機能を使用しようとしていたことを行うには:
from multiprocessing.dummy import Pool as ThreadPool
pool = ThreadPool(2)
results = pool.map(score_function, lst)
ただし、次のエラーが発生します。奇妙な
IOError: [Errno 2] No such file or directory: 'U'
何かがここで起こっています。私のタプルの1文字を引数として扱います。任意のアイデアを正しく行う方法?
はあなたが@editありがとう
score_function定義の欠如は私の悪いです。私は質問を更新してみましょう:
def score_function(pairs):
score_list = list()
for pair in pairs:
score = findElement(target = pair[0], source = pair[1])
score_list.append([pair[0], pair[1], score])
return score_list
findElementは次のように定義されて
:あなたのscore_functionを知り、どのように定義し、アクセスをせずに
def findElement(target, source):
with open(source, 'rb') as source_:
source_bytes = source_.read()
with open(target, 'rb') as target_:
target_bytes = target_.read()
score = API_request(target_bytes = target_bytes,
source_bytes = source_bytes)
return score
あなたのscore_functionも共有できますか?少なくとも定義のような重要な部分はありますが、そこにどのようにパラメータにアクセスしてください。 – Hannu
@Hannuあなたは正しいです。私はscore_function定義を追加しました –
私は別の答えを投稿しました、少し助けてください。 – Hannu