Ну, по крайней мере, тайна мне. Рассмотрите следующее:
import time
import signal
def catcher(signum, _):
print "beat!"
signal.signal(signal.SIGALRM, catcher)
signal.setitimer(signal.ITIMER_REAL, 2, 2)
while True:
time.sleep(5)
Работы как ожидалось т.е. поставляют "удар!" сообщение каждые 2 секунды. Затем, никакой вывод не производится:
import time
import signal
def catcher(signum, _):
print "beat!"
signal.signal(signal.SIGVTALRM, catcher)
signal.setitimer(signal.ITIMER_VIRTUAL, 2, 2)
while True:
time.sleep(5)
Где проблема?
Из моего системного человека setitimer (выделено мной):
Система предоставляет каждому процессу три интервальных таймера, каждый из которых убывает за определенное время. домен . Когда любой таймер истекает, процессу посылается сигнал, и таймер (потенциально) перезапускается.
ITIMER_REAL уменьшается в реальном времени и доставляет SIGALRM по истечении срока.
ITIMER_VIRTUAL уменьшается только тогда, когда процесс выполняет , и доставляет SIGVTALRM по истечении срока.
Вы только что упустили из виду, что ваш процесс не выполняется во время сна? У вас уйдет очень много времени, чтобы накопить фактически использованное время с этим циклом.
Как сказал Аарон, безопасность Windows Share имеет два компонента Первый - безопасность самой Акции. Второй - безопасность файлов и папок в этом общем ресурсе.
Для этого оба должны разрешить доступ к каталогу.
Также следует знать, что группа EVERYONE включает учетные записи компьютеров домена, встроенную системную учетную запись, пользователей домена, гостевых пользователей и пользователей, прошедших проверку подлинности.
Это означает, что первое, что вы хотите сделать, это увидеть, под каким пользователем это действительно работает. Если он работает под учетной записью компьютера И не является частью домена, то необходимо предоставить этой учетной записи компьютера доступ к общему ресурсу и файловой системе.
-121--4481866- Да, она безопасна для потока со стратегией по умолчанию ( MODE _ THREADLOCAL
) (если вы не пытаетесь изменить стратегию на лету). Однако если необходимо, чтобы порожденные потоки наследовали SecurityContext
родительского потока, необходимо задать MODE _ INHERITABLETHREADLOCAL
.
Также аспекты не имеют никакой "логики многопоточности", они выполняются в том же потоке, что и рекомендованный метод.
-121--4378584- Сигнал .ITIMER _ VIRTUAL
засчитывается только при запущенном процессе. time.sleep (5)
приостанавливает процесс, чтобы таймер не уменьшился.