我在我的 Django 站点中迫切需要这个,但由于时间限制,我无法进行任何重大修改。这可能是最便宜的就地修改。
如果我们只关注其中一个build
或run
...
build
现在我从(或运行)取回 id 。所有繁重的工作现在都在一个单独的函数中。
'
import multiprocessing as mp
def main():
id = get_build_id(....)
work = mp.Process(target=heavy_build_fn)
work.start()
return id
如果我在 shell 中运行它(我没有在实际的 Django 应用程序上测试过它),终端不会完全结束,直到work
进程完成它的工作。作为一个网络应用程序,我需要立即返回 id。我可以work
在不中断的情况下放置在背景上吗?
谢谢。
我读过这篇如何在 Python 中运行另一个脚本而不等待它完成?,但我想知道其他方法,例如坚持使用 MP。Popen
解决方案可能不是我真正想要的。
import multiprocessing as mp
import time
def build():
print 'I build things'
with open('first.txt', 'w+') as f:
f.write('')
time.sleep(10)
with open('myname.txt', 'w+') as f:
f.write('3')
return
def main():
build_p = mp.Process(name='build process', target=build)
build_p.start()
build_p.join(2)
return 18
if __name__ == '__main__':
v = main()
print v
print 'done'
安慰:
I build things
18
done
|
然后等待
最后
user@user-P5E-VM-DO:~$ python mp3.py
I build things
18
done
user@user-P5E-VM-DO:~$