0
我打开更多过程用python来通过urlib2检索文件,我只把这个调用放到了函数中。python过程返回全局变量
t = Process(target=traer, args=(dir, listado[contador],))
这是在过程对象调用函数
def traer(dir,y):
global listado2
try:
file = urllib2.urlopen(dir+y)
nombre=y
output = open('C:/ndfd/degrib/bin/archivos/'+nombre ,'wb')
output.write(file.read())
output.close()
except urllib2.HTTPError, e:
print 'HTTPError = ' + str(e.code)
except urllib2.URLError, e:
listado2.append(y)
print 'URLError = ' + str(e.reason)
这是
if __name__ == '__main__':
global listado
global listado2
listado=[]
listado2=[]
crear_trip(dir,listado)
salida_bath(dir,listado,listado2)
内部salida_bath归档文件的根是一个循环while内部的打开过程。
在异常中我想追加到一个名为listado2的全局变量,但这不起作用,说我这是未定义的listado2。
我解决这个问题对我来说,改变策略
的salida_bath
manager = Manager()
listado2 = manager.dict()
把过程的康塔多内和过去的新listado2的过程
t = Process(target=traer, args=(contador,dir, listado[contador],listado2))
创建
并在traer功能中改变这一点。外界认为这
except urllib2.URLError, e:
listado2[contador]=y
print 'URLError = ' + str(e.reason)
检查工作
for x in listado2.values():
listado.append(x)
print listado
你好,我在调用过程之前初始化,但在外面。该过程调用另一个初始化全局变量的函数 – virtualsets
然后,您应该编辑您的问题并包含代码,该代码显示_how_,_where_和_when_您初始化'listado2'变量。 – lanzz
谢谢你的时间。我解决了,我不知道它是不好还是不好,但这是行得通的。 ;)对不起英语不好。 – virtualsets