Я использую утверждение в многопоточной среде, чтобы помочь мне обнаружить ранние ошибки.Но оказывается, что когда утверждение не удалось, python3.7 просто молча завершается без вывода сообщения об ошибке, которое я хочу увидеть.Спасибо за помощь заранее.
Вот пример кода:
from concurrent.futures import ThreadPoolExecutor
import threading
import random
from time import sleep
def task():
assert False, "no assertion output, why?"
print("Executing our Task")
sleep(5)
result = 0
i = 0
for i in range(10):
result = result + i
print("I: {}".format(result))
print("Task Executed {}".format(threading.current_thread()))
if __name__ == '__main__':
executor = ThreadPoolExecutor(max_workers=3)
task1 = executor.submit(task,1)
task2 = executor.submit(task,1)
#task(), directly calling and the assertion failure message will be printed out.
Я запустил его с помощью команды python3.7 test.py
Я думаю, что использовал утверждение Python внеправильный путь, потому что я предполагаю, что это функция assert в c ++.Если я изменяю утверждение на выдачу исключения, приведенный выше код тоже не печатается.Должен ли я перехватить исключение?
Кстати, напрямую вызывая его, и будет отображаться сообщение об ошибке подтверждения.