대기열/다중 처리를 사용하는 이상한 오류가 발생합니다. 기본적으로 목록을 취하고 구문 분석하는 함수가 있습니다.다중 처리 대기열 모듈을 통해 함수에 목록 전달 오류
필자는 이것을 여러 번해야하므로 필자가 가지고있는 코어에 퍼뜨리는 것이 좋은 생각이었고 큐를 설정하려고했지만 작동하지 않았습니다. 내 코드는 다음과 같습니다.
# Establish communication queues
tasks = multiprocessing.Queue()
# Start consumers
num_consumers = multiprocessing.cpu_count() * 2
print 'Creating %d consumers' % num_consumers
worker = [ rules(tasks)
for i in xrange(num_consumers) ]
for w in consumers:
w.start()
def loadGraph(dayCurrent, day2Previous):
for dayCurrentCount in graph[dayCurrent]:
dayCurrentValue = graph[dayCurrent][dayCurrentCount]
for day1Count in graph[day2Previous]:
day1Value = graph[day2Previous][day1Count]
rulesDataToPass = [day1Count, day1Value, dayCurrentCount, dayCurrentValue, dayCurrent, day2Previous]
tasks.put(rulesDataToPass)
tasks.close()
tasks.join_thread()
내가 잘못하고있는 것이 확실하지 않습니다. 대기열을 사용하지 않고 잘 작동합니다. 문제는 내 함수가 여러 변수를 실행해야한다는 것입니다 (개별적으로 보내기 전에 목록에 모아 묶어서 대기열에 넣을 수 있음).
도와주세요!
미리 감사드립니다.
UPDATE : 요청한 여기 추적이다 기본적 난 '규칙'이라고 한 함수로 데이터를 전송 한
Traceback (most recent call last):
File "/Users/lostsoul/Dropbox/code/learning/python/game.py", line 213, in <module>
for i in xrange(num_consumers) ]
File "Users/lostsoul/Dropbox/code/learning/python/game.py", line 191, in rules
day1Count = dict[0]
TypeError: 'Queue' object does not support indexing
에서, 딕셔너리는 다음 day1Count = 딕셔너리 [0]과 같이 해석되어, ..day1value dict [1] ... 등. 기본적으로 서로에 대해 두 개의 사전을 비교하려고합니다. 그래서 큐는 모든 엔트리를 함께 묶는 중첩 된 for 루프에서 온 것입니다. (큐에 추가하면 모든 CPU에서 처리됩니다. 현재 개별적으로 작동하지만 하나의 CPU를 사용하여 15 분 소요됩니다.)
UPDATE2 : 여기에 규칙 기능이 있습니다. 간단 해. 기본적으로이 잘 작동 큐없이 (룰 엔진의 그것의 나의 버전)
def rules(dict):
day1Count = dict[0]
day1Value = dict[1]
dayCurrentCount = dict[2]
dayCurrentValue = dict[3]
dayCurrent = dict[4]
day2Previous = dict[5]
exactSame(day1Count, day1Value, dayCurrentCount, dayCurrentValue, dayCurrent, day2Previous)
withinFivePercentChange(day1Count, day1Value, dayCurrentCount, dayCurrentValue, dayCurrent, day2Previous)
deleteNonEdgeNodes(dayCurrentCount, dayCurrentValue, dayCurrent)
값을 소요하고 다른 기능에 전달합니다.
당신은 예외 메시지와 당신이 얻을 역 추적을 포함 할 수 있습니다를 스크립트? – chown
@chown 안녕하세요. 댓글을 남깁니다. 나는 메시지로 질문을 갱신했다. 희망이 도움이됩니다. – Lostsoul
우리는'rules'의 본문을 볼 필요가 있습니다. 전달되고있는 항목에 대해 색인을 생성하려고 시도하는 것처럼 보이는데 작동하지 않습니다. –