我开始尝试使用IPython并行工具并遇到问题.我启动我的python引擎:
ipcluster start -n 3
Run Code Online (Sandbox Code Playgroud)
然后以下代码运行正常:
from IPython.parallel import Client
def dop(x):
rc = Client()
dview = rc[:]
dview.block=True
dview.execute('a = 5')
dview['b'] = 10
ack = dview.apply(lambda x: a+b+x, x)
return ack
ack = dop(27)
print ack
Run Code Online (Sandbox Code Playgroud)
按原样返回[42,42,42].但如果我将代码分成不同的文件:dop.py:
from IPython.parallel import Client
def dop(x):
rc = Client()
dview = rc[:]
dview.block=True
dview.execute('a = 5')
dview['b'] = 10
print dview['a']
ack = dview.apply(lambda x: a+b+x, x)
return ack
Run Code Online (Sandbox Code Playgroud)
并尝试以下方法:
from dop import dop
ack = dop(27)
print ack
Run Code Online (Sandbox Code Playgroud)
我从每个引擎得到错误:
[0:apply]: …Run Code Online (Sandbox Code Playgroud) 我想计算"累积最小值"数组 - 基本上,数组的最小值,直到每个索引,如:
import numpy as np
nums = np.array([5.,3.,4.,2.,1.,1.,2.,0.])
cumulative_min = np.zeros(nums.size, dtype=float)
for i,num in enumerate(nums):
cumulative_min[i] = np.min(nums[0:i+1])
Run Code Online (Sandbox Code Playgroud)
这工作(它返回正确的数组([5.,3.,3.,2.,1.,1.,1.,0.])),但如果我能,我想避免for循环.我认为构建一个二维数组并使用np.amin()函数可能会更快,但我也需要一个循环.
我有一个整数列表,我想用作python词典中的键.我正在缓存一个以int的列表作为输入的函数的结果.我目前的解决方案
list_of_ints = [1,20,3,4]
key = str(sorted(list_of_ints))[1:-1].replace(' ','')
Run Code Online (Sandbox Code Playgroud)
它产生关键'1,3,4,20'.似乎应该有更快/更漂亮/更pythonic的方式来做到这一点.