есть материал такой интересный в стандартной библиотеке