我正在运行一个需要一段时间才能被评估16次的函数。但是,所有这些运行都是相互独立的。因此我决定使用joblib来加速它。
Joblib就像它应该的那样工作并加快速度,但我正在努力解决一个问题 - 如何正确地返回评估值?我想将16个结果保存到内存中,最好是保存到列表中。但是,使用全局变量似乎不是一个选项,因为新的Python进程不使用父进程的全局变量。根据joblib文档,Parallel的max_nbytes参数为要共享的数组大小设置了一个阈值,但是我对子进程函数中16个整数列表所做的所有更改都对父进程中的列表没有影响。
唯一的选项是将计算值保存到文件中,然后使用父进程检索它们还是有其他选择?
答案 0 :(得分:2)
如果您确实需要joblib,可以将结果放在<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<form action="./index.php" method="post" accept-charset="utf-8">
<input type="hidden" name="foo" value="bar">
<input type="submit" name="foo[bar]" value="Senden">
</form>
中,并在结尾处检索结果。
from multiprocessing documentation:
Queue
你也可以使用from multiprocessing import Process, Queue
def f(q):
q.put([42, None, 'hello'])
if __name__ == '__main__':
q = Queue()
p = Process(target=f, args=(q,))
p.start()
print q.get() # prints "[42, None, 'hello']"
p.join()
,它就是这样:(from multiprocessing documentation)
multiprocessing.Pool
将打印到标准输出:
[1,4,9]