ctypes - это безопасный модуль для использования, если вы правильно его используете.
Некоторые библиотеки предоставляют доступ к вещам более низкого уровня, некоторые модули просто позволяют вам выстрелить себе в ногу. Поэтому, естественно, некоторые модули более опасны, чем другие. Это не значит, что вы не должны их использовать!
Вы, наверное, слышали, что кто-то ссылается на что-то вроде этого:
#Crash python interpreter
from ctypes import *
def crashme():
c = c_char('x')
p = pointer(c)
i = 0
while True:
p[i] = 'x'
i += 1
Сбой интерпретатора Python отличается от самого кода Python, который выдает ошибку во время выполнения. Например, бесконечная рекурсия с установленным по умолчанию пределом рекурсии может вызвать ошибку во время выполнения, но интерпретатор python все равно будет жив после этого.
Другой хороший пример этого - модуль sys. Вы не перестанете использовать модуль sys, потому что он может привести к сбою интерпретатора Python.
import sys
sys.setrecursionlimit(2**30)
def f(x):
f(x+1)
#This will cause no more resources left and then crash the python interpreter
f(1)
Существует также много библиотек, которые предоставляют доступ более низкого уровня. Например, модуль gc можно использовать для предоставления доступа к частично сконструированному объекту, доступ к полям которого может вызвать сбои.
Ссылка и идеи взяты из: Crashing Python