次の問題があります。これまでのところ、Webクローラーを実装したいと思っていましたが、遅かったので、URLを取得するためにマルチプロセッシングを使用しようとしました。 残念ながら私はこの分野ではあまり経験がありません。 読んだ後、最も簡単な方法は、map
メソッドをmultiprocessing.pool
から使用するように思えました。Pythonマルチプロセッシング - TypeError:セキュリティ上の理由から、AuthenticationStringオブジェクトのpicklingが許可されていません
しかし、私は常に次のエラーを取得する:
TypeError: Pickling an AuthenticationString object is disallowed for security reasons
私は同じエラーで非常に少数の例を発見し、彼らが、残念ながら私を助けていませんでした。
import multiprocessing
class TestCrawler:
def __init__(self):
self.m = multiprocessing.Manager()
self.queue = self.m.Queue()
for i in range(50):
self.queue.put(str(i))
self.pool = multiprocessing.Pool(6)
def mainloop(self):
self.process_next_url(self.queue)
while True:
self.pool.map(self.process_next_url, (self.queue,))
def process_next_url(self, queue):
url = queue.get()
print(url)
c = TestCrawler()
c.mainloop()
私は任意のヘルプや提案について非常に感謝し、次のようになります。
私は、エラーを再現することができます私のコードの被覆のバージョンを作成しました!
は、あなたの答えをありがとうございました!簡単な例ではうまくいきましたが、私のプログラムで変更したときに、何とか同じような問題が残っているように見えます。多分、酸洗を説明する資源を私に送ってもらえますか?これを探しているときに、私は主にpickleモジュールに関するテキストを取得します。 –
@blue:あなたの質問を編集し、** args = **あなたが 'pool.map(...')のために使用していることを表示してください、あなたはまだ 'muliprocessing'オブジェクトを渡すことはできません! – stovfl