我正在尝试在 Apache 2.2 / mod_python 3.2.8 下运行一些 python 代码。最终代码执行 os.fork() 并产生 2 个独立的长期运行进程。这些进程中的每一个都必须创建一个类的单独实例,以避免并行流中任何可能的冲突。
class Foo(object):
pass
kidprocs = []
for kid in ('kid1', 'kid2'):
pid = os.fork()
if pid:
# parent
kidprocs.append(pid)
time.sleep(5)
else:
# child
fooobj = Foo()
print "Starting %s in sub-process %s" % (kid, os.getpid())
print "Kid fooobj: %s" % repr(fooobj)
os._exit(0)
for kidproc in kidprocs:
os.waitpid(kidproc, 0)
这些打印输出如下所示:
Starting kid1 in sub-process 20906
foo obj: <__main__.Foo instance at 0xb7da5fec>
Starting kid2 in sub-process 20909
foo obj: <__main__.Foo instance at 0xb7da5fec>
如您所见,我为两个子流程获得了相同的对象。你知道为什么它在 mod_python 下会这样吗?有没有办法获得单独的实例?非常感谢。