繁体   English   中英

如何解决SciPy的Python 3.x的handythread示例代码:raise中的语法错误无效?

[英]How to solve SciPy's handythread sample code for Python 3.x: invalid syntax error in raise?

该网站SciPy的有一个链接到一个简单的parallel_map这似乎令人难以置信的方便使用它的位置在这里 )。 不幸的是,由于Python 2与3的某些不同,代码在我的环境中不起作用。

我得到的错误与raise语法有关:

    from handythread import parallel_map
  File "C:\Users\Ruben\Dropbox\Doctoraat\Python\handythread.py", line 55
    raise a, b, c
           ^
SyntaxError: invalid syntax

我发现文档在这里解释了语法更改但我找不到一个简单的更改来使其工作。 谁知道要修复什么? handythread的相关片段是这样的:

for t in threadlist:
  t.join()
if exceptions:
  a, b, c = exceptions[0]
  raise a, b, c

在示例中,它们获取sys.exc_info()元组并将其存储到exceptions列表中:

e = sys.exc_info()
exceptions.append(e)

sys.exc_info()返回(type, value, traceback) ,因此您可以重新引发原始异常:

a, b, c = exceptions[0]
raise b

但我建议这样做:

a, b, c = exceptions[0]
raise a(b).with_traceback(c)

这将保留完整的,原始的,回溯并使代码的调试更容易。

@ justhalf的建议是非常合理的,但是如果你想要做得对,请按照本PEP中的说明进行操作(搜索“三个表达式加注语句将从中转换”)。 或者您可以通过2to3运行脚本,它将自动执行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM