在以下示例中,do_magic
函数将在父进程和子进程中被调用两次。
我的困惑是os.fork
已被gevent.fork
取代,而hub.loop.reinit()
将在子进程中调用。如果是这样,为什么在子进程中仍然会调用do_magic
?
import gevent
from gevent import monkey
monkey.patch_all()
import os, time
def do_magic():
print 'magic...'
def main():
g = gevent.spawn_later(1, do_magic)
pid = os.fork()
if pid != 0: # parent
g.join()
else:
gevent.get_hub().loop.reinit()
time.sleep(3)
main()