分叉绿线程

5 投票
1 回答
1018 浏览
提问于 2025-04-16 12:33

也许我漏掉了什么明显的东西(今天是星期五),但有没有办法在一个绿色线程(greenlet)上做到类似于os.fork()的效果?我并不是想要分叉进程,而是想要在绿色线程中运行一段代码,然后再运行另一段代码,但希望它们有独立的作用域(就像os.fork()那样)。

有没有什么想法,还是我应该去睡觉呢?

1 个回答

4

为了简单理解如何“分叉”一个绿色线程(greenlet),你只需要创建另一个绿色线程,把你的“子函数”放进去就行了。我还强烈推荐gevent,它是基于绿色线程开发的。gevent的代码里有一个fork()方法,但这个方法是分叉整个Python进程,然后在子进程中重新启动gevent。我敢说,你用gevent来实现你想做的事情,代码会比单纯用绿色线程更容易读懂。

撰写回答