我已经多次研究过这个问题,但是没有找到一个可以在我的情况下工作的解决方法,或者我理解的解决方法,所以请耐心等待.
基本上,我有一个功能的层次组织,这阻止我在顶层进行多处理.不幸的是,我不相信我可以改变程序的布局 - 因为我需要在初始输入后创建的所有变量.
例如,说我有这个:
import multiprocessing
def calculate(x):
# here is where I would take this input x (and maybe a couple more inputs)
# and build a larger library of variables that I use further down the line
def domath(y):
return x * y
pool = multiprocessing.Pool(3)
final= pool.map(domath, range(3))
calculate(2)
Run Code Online (Sandbox Code Playgroud)
这会产生以下错误:
Can't pickle <type 'function'>: attribute lookup __builtin__.function failed
Run Code Online (Sandbox Code Playgroud)
我在考虑全局,但我担心我必须定义太多,这可能会使我的程序减慢很多.是否有任何解决方法而无需重组整个计划?
所以,我想知道是否有办法在一步中清除和覆盖/重写变量,而不必事先清除它.
这就是我的例子:
def rate(t,w):
return (t + cos(t))
sum = 0
for i in range(k):
sum += rate(t+h*i,w)
print sum
Run Code Online (Sandbox Code Playgroud)
但是如果我想以不同的方式重用这个函数,我必须首先清除"sum"变量.如果可能的话,我想摆脱那一步.
sum = 0 # I want to combine this step
sum = rate(t,w)/2 # and this one.
for i in range(1,k):
sum += rate(t+h*i,w)
print sum
Run Code Online (Sandbox Code Playgroud)
这可能吗?(顺便说一下,所有这些代码都在同一个文档中.)
好的,基本上我想同时用所有相同的值定义4个单独的变量.
有可能做到这一点吗?
a, b, c, d = 4
Run Code Online (Sandbox Code Playgroud)
所有四个变量分别等于4?