2014-01-21 2 views
3

, когда я пытаюсь убить greenlet используя убить(), а «блок» пары по умолчанию с помощью Правда,В чем разница между «убить» greenlet блока или нет

Greenlet.kill(self, exception, block, timeout) 

док говорит:

Если блок Правда (по умолчанию), подождите, пока greenlet не умрет или дополнительный тайм-аут истекает. Если блок равен False, текущий greenlet не является незапланированным.

Как это понять правильно? thx

ответ

2

Допустим, у вас есть две зелени A и B.

1) Внутри B Вы звоните A.kill(block=True). Immediatly после этого контекстного переключения происходит, Python переходит на A, и он вызывает исключение в A. A может справиться с этим или нет, он может прыгать где-то в другом месте, таймаут может произойти при убийстве и т. Д.

2) Внутри B вы звоните A.kill(block=False). Контекстный переключатель не. B продолжает выполнять другие команды после убийства. Команда Kill запускается, хотя, как только Python переходит на A, он будет вызывать исключение.

Таким образом, блок «AFAIK» просто означает «сделать переключатель сейчас».

 Смежные вопросы

  • Нет связанных вопросов^_^