2015-01-24 5 views
5

나는 멀티 쓰레딩 큐와 멀티 프로세싱 큐를 동시에 사용하려고한다. 스레딩 큐는 많은 웹 페이지를 검색하기 위해 20 개의 스레드에 의해 사용됩니다. 그런 다음 페이지를 다중 프로세스 대기열에 넣어 4 명의 프로세스 작업자가 데이터를 정리할 수있게하려고합니다. 아래는 나의 기본적인 구조입니다. 내 문제는 작업 대기열에서 대기열이 반복 가능하지 않다는 오류가 발생한다는 것입니다. 멀티 스레딩 대기열이 다중 프로세스 대기열을 덮어 쓰고 있다고 생각하지만 실제로 무엇이 잘못되었는지 알지 못합니다. 여기 파이썬에서 쓰레드와 프로세스를 공유 큐와 함께 사용하기

ticker_queue = Queue() 

work_queue = Queue() 
tickers = get_tickers() 


for i in tickers: 
    ticker_queue.put(i) 

for i in range(20): 
    t = Thread(target=network_worker, args = (ticker_queue, work_queue)).start() 

for i in range(4): 
    p = Process(target = worker, args = (work_queue)).start() 

은 당신이 원하는 것은을하는 동안

p = Process(target = worker, args = (work_queue)).start() 

에서 누락 쉼표 그냥 표현,

이후가된다 역 추적

Traceback (most recent call last): 
    File "OneDrive\Python\andys.py", line 108, in <module> 
    p = Process(target = worker, args = (work_queue)).start() 
    File "C:\Python27\lib\multiprocessing\process.py", line 104, in __init__ 
    self._args = tuple(args) 
TypeError: 'Queue' object is not iterable 
+0

간단한 자체 포함 예제로 문제를 끓인 다음 예제와 추적을 게시하십시오. 어느 누구도 Xavier 교수님을 잠시 보지 못했습니다. ;-) – thebjorn

+0

저는 몇 명만 출근해야하는데, 아무도 응답하지 않으면 오늘 밤에 독립 취재 예를 올릴 것입니다. 감사. – mobone

+0

쉼표가 없습니다 :'p = Process (target = worker, args = (work_queue)). start()' – thebjorn

답변

8

입니다 1 요소 튜플 :

(work_queue,) 

추가 쉼표를 확인하십시오.

관련 문제