多线程在Python Spyder中冻结但不是命令提示符Windows 10

时间:2016-08-10 22:30:54

标签: python windows multithreading spyder

我在Spyder中运行一个脚本,它利用多线程库和IPython控制台冻结下面的输出。但是,使用Windows命令提示符通过' python quickstart11.py'运行脚本。工作正常并产生适当的输出。

    runfile('C:/Python35/User/backtrader-master/docs/quickstart/quickstart11.py', wdir='C:/Python35/User/backtrader-master/docs/quickstart')
Exception in thread Thread-8:
Traceback (most recent call last):
  File "C:\Anaconda3\lib\threading.py", line 914, in _bootstrap_inner
    self.run()
  File "C:\Anaconda3\lib\threading.py", line 862, in run
    self._target(*self._args, **self._kwargs)
  File "C:\Anaconda3\lib\multiprocessing\pool.py", line 429, in _handle_results
    task = get()
  File "C:\Anaconda3\lib\multiprocessing\connection.py", line 251, in recv
    return ForkingPickler.loads(buf.getbuffer())
AttributeError: Can't get attribute 'TestStrategy' on <module '__main__' (<_frozen_importlib_external.SourceFileLoader object at 0x000002727C461438>)>

我已尝试根据Python doc添加freeze_support(),这可以缓解问题,但它仍然会冻结。发生了什么事?

Windows 10 64位,Anaconda Python 35 64位安装程序。

1 个答案:

答案 0 :(得分:0)

问题在于Spyder。内核以解释模式运行,并添加&#34; freeze_support&#34;在其他事情发生之前不会发生,即使这是意图,因为内核已经在运行。

见这里:https://github.com/mementum/backtrader/issues/118