0

我在 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') 
4

1 回答 1

0

我修改了您的代码,以便可以用于 python 3,我使用的是 Eclipse IDE,但问题不是 IDE(Spider/Jupyter),因为我有同样的问题。

错误图片

这是一些多处理问题,也许你的 Jupyter notebook 使用了不同的 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():
     pass
于 2018-11-22T12:22:10.940 回答