我正在尝试为主Pylons过程中的一些繁重计算创建一个后台进程。这是代码:
p = Process(target = instance_process, \
args = (instance_tuple.instance, parent_pipe, child_pipe,))
p.start()
创建并启动了该进程,但似乎是主进程的一个分支:它正在侦听同一个端口并且整个应用程序挂起。我究竟做错了什么?
提前致谢。
答案 0 :(得分:1)
进程是一个分支。如果你仔细研究它的实现,你会发现Process.start()
调用了一个fork。但是,它不会调用任何exec
变体来更改执行上下文。
但是,这可能与在同一端口上侦听无关(除非父进程是多线程的)。程序悬挂在哪一点? 我知道当你尝试关闭python程序而不终止通过多处理创建的子进程时,它会挂起,直到子进程终止。 例如,如果您没有关闭进程之间的管道,则可能会导致这种情况。