[英]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.