Я пытался использовать С. (Parallel Python), как это:Почему этот код не работает параллельно питона
import glob
import subprocess
import pp
def run(cmd):
print cmd
subprocess.call(cmd, shell=True)
job_server = pp.Server()
job_server.set_ncpus(8)
jobs = []
for a_file in glob.glob("./*"):
cmd = "ls"
jobs.append(job_server.submit(run, (cmd,)))
for j in jobs:
j()
Но встречаются такие ошибки, что subprocess.call не является глобальное имя.
An error has occured during the function execution
Traceback (most recent call last):
File "/Library/Python/2.7/site-packages/pp-1.6.1-py2.7.egg/ppworker.py", line 90, in run
__result = __f(*__args)
File "<string>", line 3, in run
NameError: global name 'subprocess' is not defined
Я импортировал подпроцесс, почему он не может быть использован здесь?
Согласно предложению abarnert, я изменил код так:
import glob
import pp
def run(cmd):
print cmd
subprocess.call(cmd, shell=True)
job_server = pp.Server()
job_server.set_ncpus(8)
jobs = []
for a_file in glob.glob("./*"):
cmd = "ls"
jobs.append(job_server.submit(run, (cmd,),modules=("subprocess",)))
for j in jobs:
j()
Но она по-прежнему не работает, он жалуется, как это:
Traceback (most recent call last):
File "/usr/lib/python2.6/threading.py", line 532, in __bootstrap_inner
self.run()
File "/usr/lib/python2.6/threading.py", line 484, in run
self.__target(*self.__args, **self.__kwargs)
File "/usr/local/lib/python2.6/dist-packages/pp-1.6.1-py2.6.egg/pp.py", line 721, in _run_local
job.finalize(sresult)
UnboundLocalError: local variable 'sresult' referenced before assignment
Эта новая проблема совершенно иная, и не имеет отношения к вашему исходному, и вы, вероятно, следует написать отдельный вопрос для Это. Но вкратце: задания PP не могут порождать новые процессы, не вызывая всевозможных проблем, и я не знаю, что у кого-то есть исправление. Кроме того, любая проблема, которая приводит к разрушению труб (которые пытаются породить новые процессы) приведет к ошибке «sresult referenced before assign», которая должна быть исправлена в будущей версии. Вероятно, вы хотите обсудить это на форумах PP. – abarnert
В частности, начинайте здесь: http://www.parallelpython.com/component/option,com_smf/Itemid,29/topic,408.0 – abarnert