在使用 ./manage.py shell 练习一些代码时,我遇到了一些我不明白的事情。
Python 2.6.6 (r266:84292, Sep 11 2012, 08:34:23)
[GCC 4.4.6 20120305 (Red Hat 4.4.6-4)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
(InteractiveConsole)
>>> from multiprocessing import Process
>>> from django.core.management import call_command
>>> p = Process(target=call_command("processphoto", 1000))
Successfully populated photo "1000" (This is output from my processphoto command)
>>>
我从来没有机会执行 p.start()
或在流程中设置任何其他变量。它似乎在实例化时执行。当我尝试使用我认为的代码时,我似乎根本没有生成多个进程,所有内容都保留在一个核心上。
我做错了什么,或者误解了什么?我想在单独的进程中生成单独的 manage.py processphoto
命令以充分利用多核服务器。
最佳答案
call_command(...)
调用函数。相反,将函数对象 call_command
及其参数分别传递给 Process
:
p = Process(target=call_command, args = ("processphoto", 1000))
关于python - Django 多处理异常,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13239087/