다음과 같은 문제가 있습니다. 지금까지는 웹 크롤러를 구현하고 싶었지만 지금까지는 작동했지만 너무 느려서 URL을 가져 오는 데 멀티 프로세싱을 사용하려고했습니다. 불행히도 저는이 분야에서 경험이별로 없습니다. 몇 가지 독서 후 가장 쉬운 방법은 내게 map
방법을 사용하는 것 같았습니다. multiprocessing.pool
Python Multiprocessing - 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