gpt4 book ai didi

python - 在带有 Django 模型的 python 脚本中使用多重处理

转载 作者:太空宇宙 更新时间:2023-11-03 18:21:13 25 4
gpt4 key购买 nike

我正在编写一个自定义脚本,以使用 django 模型的多处理来运行相同函数的多个实例。

与本文相关的代码包括:

if __name__ == '__main__':
for count, script in enumerate(scripts):
for counter in range(0, len(counters)):
p = Process(target=script, args=(counters[counter][count],))
p.start()
p.join()

循环执行正确,但我的 __name__ == '__main__' 语句有问题。我可以将其组合在一起,在该行之前说 __name__=__main__ ,但随后我会遇到一个问题,其中 p.start() 抛出错误:

PicklingError: Can't pickle <function nordstrom_script at 0x0000000003B2A208>: it's not            found as __main__.nordstrom_script

我对 python/django 比较陌生,以前从未尝试过多重处理,所以如果我的逻辑有严重错误,请原谅我缺乏知识。

任何解决此问题的帮助将不胜感激。我知道 django 不能很好地处理多处理,问题来自于我使用:

>>>python manage.py shell
>>>execscript('scripts/script.py')

而不是

>>>python scripts/script.py

最佳答案

这个版本可以直接运行,并且适合我。您可以修改此代码以产生相同的错误吗?请注意,它只处理“计数器”的第一个参数,我认为这是设计使然。

来源

import multiprocessing 

def produce(arg):
print 'arg:',arg

scripts = [produce]
counters = [ [3350000, 7000000] ]

if __name__ == '__main__':
for count, script in enumerate(scripts):
for counter in range(0, len(counters)):
p = multiprocessing.Process(
target=script, args=(counters[counter][count],)
)
p.start()
p.join()

输出

arg: 3350000

关于python - 在带有 Django 模型的 python 脚本中使用多重处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24102693/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com