我正在使用anaconda下的qutip包。我只是在我的脚本中调用函数mcsolve。现在,当在Jupyter笔记本下运行时,脚本在几秒钟内就能正常运行并得到结果。但是当在Spyder中运行时,它就会卡住,永远不会结束。我在qutip中的其他函数中从来没有遇到过这个问题。
在Spyder中运行此命令将打印'aa‘,然后打印'bb’,但永远不会打印到'cc‘行:
import qutip as qt
import numpy as np
import matplotlib.pyplot as plt
# Some constants
g = 100
delta = 10
Ka = g/2.5
Gamma = g/200
Gammap = g/50
Nu = 2*g
Delta_a = -4.12*g
Delta_c = Delta_a +delta*g
N = 4
sm = qt.tensor(qt.qeye(N),qt.sigmam())
sp = sm.dag()
a = qt.tensor(qt.destroy(N),qt.qeye(2))
adag = a.dag()
H = Delta_aspsm + Delta_cadaga + g*(adagsm+spa)+Nu*(sp+sm)
sz = qt.tensor(qt.qeye(N),qt.sigmaz())
C1 = np.sqrt(2*Ka)*a C2 = np.sqrt(Gamma)*sm
C3 = np.sqrt(Gammap/4.0)*(spsm-smsp)
rhoss = qt.steadystate(H,[C1,C2,C3])
print('aa')
times = np.linspace(0,10,1000)
IC = qt.tensor(qt.basis(N,0),qt.basis(2,1))
print('bb')
data = qt.mcsolve(H,IC,times,[C1,C2,C3],[adaga,spsm],ntraj = 1)
print('cc') 发布于 2018-11-22 20:22:11
我修改了你的代码,以便我可以使用python 3,我正在使用Eclipse IDE,但问题不是IDE (Spider/Jupyter),因为我有同样的问题。
这是一些多处理问题,也许你的Jupyter笔记本使用了不同的python解释器。以下是您的代码的修改版本:
import qutip as qt
import numpy as np
import matplotlib.pyplot as plt
# Some constants
g = 100
delta = 10
Ka = g/2.5
Gamma = g/200
Gammap = g/50
Nu = 2*g
Delta_a = -4.12*g
Delta_c = Delta_a +delta*g
N = 4
sm = qt.tensor(qt.qeye(N),qt.sigmam())
sp = sm.dag()
a = qt.tensor(qt.destroy(N),qt.qeye(2))
adag = a.dag()
H = Delta_a*sp*sm + Delta_c*adag*a + g*(adag*sm+sp*a)+Nu*(sp+sm)
sz = qt.tensor(qt.qeye(N),qt.sigmaz())
C1 = np.sqrt(2*Ka)*a
C2 = np.sqrt(Gamma)*sm
C3 = np.sqrt(Gammap/4.0)*(sp*sm-sm*sp)
rhoss = qt.steadystate(H,c_op_list=[C1,C2,C3])
print('aa')
times = np.linspace(0,10,1000)
IC = qt.tensor(qt.basis(N,0),qt.basis(2,1))
print('bb')
data = qt.mcsolve(H,IC,times,[C1,C2,C3],[adag*a,sp*sm],ntraj = 10)
print('cc') 看起来并行处理有问题,看这里:,https://github.com/pytorch/pytorch/issues/5858,当我运行它的时候,我得到了同样的错误。它没有任何安全的方法来处理它,除非你问conda的开发人员。然而,通过猴子补丁,我设法运行了它这是我的控制台镜像:
警告解决方案不稳定,可能会导致一些不一致转到
C:\Users\Your_username\AppData\Local\Continuum\anaconda3\Lib\multiprocess\spawn.py现在,在脚本的末尾添加以下内容:
def _check_not_importing_main():
passhttps://stackoverflow.com/questions/47821301
复制相似问题