我用python打开了更多的进程,通过urlib2检索文件,我只调用函数。你知道吗
t = Process(target=traer, args=(dir, listado[contador],))
这是调用process对象的函数
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琰u浴中,在一个回路中,而则开启该过程。你知道吗
在例外情况下,我想附加到一个名为listado2的全局变量,但这不起作用,假设它是未定义的listado2。你知道吗
我解决了这个问题,改变了策略
在salidaèu浴室内创建
manager = Manager()
listado2 = manager.dict()
将一个contador放在流程中,并将新的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
^{} statement 只通知解析器该变量不被视为局部变量,但如果不存在新变量,它不会定义新变量。在访问它之前,你仍然需要对它进行初始化。您似乎假设它是一个列表(
listado2.append(y)
),但在您的代码中,实际上没有任何地方使用列表值初始化它。Python如何知道对一个从未被赋值的变量调用哪个.append()
方法?你知道吗相关问题 更多 >
编程相关推荐