分叉小格林
也许我错过了一些明显的东西(而且是星期五),但是有没有办法在 greenlet 上执行相当于 os.fork() 的操作?我不一定要分叉该进程,我希望采用 greenlet 并运行一组代码,然后运行另一组代码,但具有独立的作用域(如 os.fork() )。
有什么想法或者我应该睡一会儿吗?
Perhaps I'm missing something obvious (and it is a Friday), but is there a way to do the equivalent of an os.fork()
on a greenlet? I'm not necessarily looking to fork the process, I'm looking to take the greenlet and run one set of code, then another, but with independent scopes (as with os.fork()
).
Any ideas or should I just get some sleep?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
为了从概念上分叉 greenlet,只需创建另一个包装您的“子函数”的 greenlet。我还强烈推荐 gevent,它是基于 greenlet 构建的。 gevent 代码有一个 fork() 方法,但它分叉了 Python 进程,然后在子进程中重新启动 gevent。我敢打赌,你可以使用比 greenlet 更可读的代码来实现你在 gevent 中所做的任何事情。
In order to conceptually fork a greenlet, just create another greenlet wrapping your "child function". I also highly recommend gevent, which is built on greenlet. The gevent code has a fork() method, but it forks the Python process and then restarts gevent in the child. I bet that you can implement whatever you are doing in gevent with more readable code than just greenlet.