У меня проблема с использованием Twisted для простого параллелизма в python. Проблема в том, что я не знаю, как это сделать, и все онлайн-ресурсы о возможностях Twisted Networking. Поэтому я обращаюсь к SO-гуру за некоторым руководством.
Используется Python 2.5.
Упрощенная версия моей проблемы работает следующим образом:
- куча научных данных
- Функция, которая обрабатывает данные и создает вывод
- ??? <здесь входит параллелизм, он берет куски данных из <strong>1 и передает их в 2
- Вывод из 3 объединяется и сохраняется
Я предполагаю, что Twisted reactor
может выполнять работу номер три. Но как?
Большое спасибо за любую помощь и предложения.
upd1:
Простой пример кода. Не знаю, как реактор работает с процессами, поэтому я дал ему мнимые функции:
datum = 'abcdefg'
def dataServer(data):
for char in data:
yield chara
def dataWorker(chara):
return ord(chara)
r = reactor()
NUMBER_OF_PROCESSES_AV = 4
serv = dataserver(datum)
id = 0
result = array(len(datum))
while r.working():
if NUMBER_OF_PROCESSES_AV > 0:
r.addTask(dataWorker(serv.next(), id)
NUMBER_OF_PROCESSES_AV -= 1
id += 1
for pr, id in r.finishedProcesses():
result[id] = pr