Форкинг Гринлетс
Возможно, я упускаю что-то очевидное (и это пятница), но есть ли способ сделать эквивалент os.fork()
на гринлете? Я не обязательно ищу ответвление процесса, я хочу взять гринлет и запустить один набор кода, затем другой, но с независимыми областями действия (как с os.fork()
).
Есть идеи или мне просто поспать?
1 ответ
Решение
Чтобы концептуально разветвлять гринлет, просто создайте еще один гринлет, обертывающий вашу "дочернюю функцию". Я также очень рекомендую Gevent, который построен на Greenlet. В коде gevent есть метод fork(), но он разветвляет процесс Python и затем перезапускает gevent в дочернем элементе. Могу поспорить, что вы можете реализовать все, что вы делаете в gevent, с более читаемым кодом, чем просто greenlet.