6 ответов:
он блокирует поток. Если вы посмотрите в модулях / timemodule.c в источнике Python вы увидите это в вызове
floatsleep(), основная часть операции сна завернута в блок Py_BEGIN_ALLOW_THREADS и Py_END_ALLOW_THREADS, позволяя другим потокам продолжать выполняться, пока текущий спит. Вы также можете проверить это с помощью простой программы на Python:import time from threading import Thread class worker(Thread): def run(self): for x in xrange(0,11): print x time.sleep(1) class waiter(Thread): def run(self): for x in xrange(100,103): print x time.sleep(5) def run(): worker().start() waiter().start()которая будет печатать:
>>> thread_test.run() 0 100 >>> 1 2 3 4 5 101 6 7 8 9 10 102
Он будет просто спать поток, за исключением случая, когда ваше приложение имеет только один поток, в этом случае он будет спать поток и эффективно процесс, а также.
в документации python по сну это не указано, поэтому я, конечно, могу понять путаницу!
поток будет блокировать, но процесс все еще жив.
в однопоточном приложении это означает, что все блокируется во время сна. В многопоточном приложении блокируется только поток, который вы явно "спите", а другие потоки все еще выполняются в процессе.
процесс не может быть запущен сам по себе. Что касается выполнения, процесс-это просто контейнер для потоков. Это означает, что вы не можете приостановить процесс вообще. Это просто не применимо к процессу.
Comments