На платформах с функцией select
(POSIX, Linux и Windows) вы можете сделать:
void sleep(unsigned long msec) {
timeval delay = {msec / 1000, msec % 1000 * 1000};
int rc = ::select(0, NULL, NULL, NULL, &delay);
if(-1 == rc) {
// Handle signals by continuing to sleep or return immediately.
}
}
Однако в настоящее время существуют лучшие альтернативы.
Интересно, docstrings для этих двух не являются полностью тем же в Python 2.5.1:
>>> import string
>>> help(string.split)
Help on function split in module string:
split(s, sep=None, maxsplit=-1)
split(s [,sep [,maxsplit]]) -> list of strings
Return a list of the words in the string s, using sep as the
delimiter string. If maxsplit is given, splits at no more than
maxsplit places (resulting in at most maxsplit+1 words). If sep
is not specified or is None, any whitespace string is a separator.
(split and splitfields are synonymous)
>>> help("".split)
Help on built-in function split:
split(...)
S.split([sep [,maxsplit]]) -> list of strings
Return a list of the words in the string S, using sep as the
delimiter string. If maxsplit is given, at most maxsplit
splits are done. If sep is not specified or is None, any
whitespace string is a separator.
Рытье глубже, Вы будете видеть, что две формы абсолютно эквивалентны, как string.split (s) на самом деле вызовы s.split () (ищите , разделяет - функции).
Эти string.split(stringobj)
функция string
модуль, который должен быть импортирован отдельно. Когда-то давно это было единственным способом разделить строку. Это - некоторый старый код, на который Вы смотрите.
Эти stringobj.split()
функция строкового объекта, stringobj
, который более свеж, чем string
модуль. Но довольно старый, тем не менее. Это - существующая практика.
Дополнительное примечание: str
строковый тип, как S.Lott указывает выше. Это означает что эти две формы:
'a b c'.split()
str.split('a b c')
# both return ['a', 'b', 'c']
... эквивалентны, потому что str.split
несвязанный метод, в то время как s.split
связанный метод str
объект. Во втором случае строка, которая передается в str.split
, используется в качестве self
в методе.
Это не имеет большого значения здесь, но это - важная функция того, как объектная система Python работает.
Короткий ответ: строковый модуль был единственным способом выполнить эти операции перед python 1.6 - они были с тех пор добавлены к строкам как методы.
Используйте, какой бы ни Вы любите, но понимаете, что str.split является рекомендуемым способом сделать его. :-)
string.split является немного более старым методом выполнения того же самого.
str.split немного более эффективен (так как Вы не должны импортировать строковый модуль или искать любые имена от него), но недостаточно иметь огромное значение, если Вы предпочитаете string.split.