#python #error-handling #compiler-errors #python-multithreading
Вопрос:
import threading
import time
start = time.perf_counter()
def do_something():
print("Sleeping in 1 second")
time.sleep(1)
print("Done sleeping")
t1 = threading.Thread(target=do_something)
t2 = threading.Thread(target=do_something)
finish = time.perf_counter()
print(f"Finished in {round(finish-start,1)} seconds(s) ")
Кто-нибудь знает, почему этот фрагмент кода возвращает эту ошибку при запуске и как ее исправить?:
Обратная связь (последний последний вызов): Файл «c:/Users/amanm/Desktop/Python/Python Крушение Course/threading.py», строка 1, в импортной резьбе
Файл «c:UsersamanmDesktopPythonPython Крушение Coursethreading.py», строка 12, в t1 = резьба.Ошибка атрибута потока(цель=do_something): частично инициализированный модуль «потоковая передача» не имеет атрибута «Поток» (скорее всего, из-за циклического импорта)
Когда я запускаю этот код в обычном режиме ожидания, он, кажется, работает, но в коде Visual Studio он не работает.
Комментарии:
1. Похоже, вы затеняете стандартный библиотечный модуль
threading
локальным модулем с тем же именем. Не используйте имена, уже принятые стандартной библиотекой.2. И тебе тоже спасибо!!
Ответ №1:
Похоже , что файл программы, который вы создали, имеет имя threading.py
, и вы импортируете библиотеку под названием threading
. Это вызывает хаос в пространстве имен. Пожалуйста, переименуйте свою программу (например, threading-example.py
).
Ответ №2:
При импорте модулей python сначала проверяет файлы в вашем текущем рабочем каталоге, прежде чем проверять другие встроенные модули. Итак, у вас, вероятно, есть файл с именем threading.py у которого нет необходимых атрибутов. Другими словами, вы произвели круговой импорт.