Я написал код, который что-то вроде этого:Как я могу решить проблему python-parallel?
import time
import pp
class gener(object):
def __init__(self, n):
self.n = n
def __call__(self):
return self
def __iter__(self):
n = self.n
for i in range(n):
time.sleep(2)
yield i
def gen():
return gener(3)
job_server = pp.Server(4)
job = job_server.submit(
gen,
args=(),
depfuncs=("gener",),
modules=("time",),
)
print job()
следующего @zilupe полезного комментария я получил следующий вывод:
<__main__.gener object at 0x7f862dc18a90>
Как я могу вставить class gener
итерации к параллельной?
Я хотел бы запустить его параллельно с другими функциями. Мне нужен этот генератор, как класс, потому что я хочу заменить другой код из модуля довольно сложного программного пакета, и было бы сложно реорганизовать этот код.
Я пробовал много чего без успеха. Я провел довольно тщательное расследование на этом сайте, но я не смог найти подходящий ответ, подходящий для меня. Кто-нибудь, любая помощь? Спасибо.
Сложение:
Согласно @zilupe полезные комментарии дополнительную информацию:
Основной целью является распараллеливание итерации внутри class gener
:
def __iter__(self):
n = self.n
for i in range(n):
time.sleep(2)
yield i
Я только созданный из gen()
потому что я не мог понять, как я могу использовать его непосредственно в parallel.submit()
.
Спасибо большое, возможно, это из-за битовой усталостью, однако, как вы упомянули это еще не ответ на мою проблему. Еще раз спасибо :) – Geeocode
Трудно сказать, что цель 'gener', но я обновил ответ с другой проверкой. – jbasko
Хорошая точка! Я бы хотел запустить параллельную итерацию, а не создание генератора. На самом деле цель gen только избегать «AttributeError: type object« gener »не имеет сообщения об ошибке« func_name ». Не могли бы вы, пожалуйста, дать мне какое-то решение, как я могу использовать общий класс непосредственно для распараллеливания итерации? – Geeocode