Как создать шаренную переменную между основным потоком и инициализированными?
Я что только не пытался делать, получаю NameError: name 'test_global' is not defined
import os
import urllib.request
from threading import Thread
import time
class DownloadThread(Thread):
"""
Пример скачивание файла используя многопоточность
"""
def __init__(self, url, name):
"""Инициализация потока"""
Thread.__init__(self)
self.name = name
self.url = url
def run(self):
"""Запуск потока"""
handle = urllib.request.urlopen(self.url)
fname = os.path.basename(self.url)
with open(fname, "wb") as f_handler:
while True:
chunk = handle.read(1024)
if not chunk:
break
f_handler.write(chunk)
msg = "%s закончил загрузку %s!" % (self.name, self.url)
test_global = self.name
print(msg)
def main(urls):
"""
Запускаем программу
"""
global test_global
for item, url in enumerate(urls):
name = "Поток %s" % (item+1)
thread = DownloadThread(url, name)
thread.start()
if __name__ == "__main__":
urls = ["http://www.irs.gov/pub/irs-pdf/f1040.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040a.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040ez.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040es.pdf",
"http://www.irs.gov/pub/irs-pdf/f1040sb.pdf"]
main(urls)
time.sleep(10)
print(test_global)