Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何解决SciPy';s handythread Python3.x的示例代码:raise中的无效语法错误?_Python_Multithreading_Exception_Python 3.x - Fatal编程技术网

如何解决SciPy';s handythread Python3.x的示例代码:raise中的无效语法错误?

如何解决SciPy';s handythread Python3.x的示例代码:raise中的无效语法错误?,python,multithreading,exception,python-3.x,Python,Multithreading,Exception,Python 3.x,SciPy网站有一个指向简单的平行地图的链接,它似乎非常方便地使用它所处的位置)。不幸的是,由于Python2和Python3的一些差异,代码在我的环境中不起作用 我得到的错误与raise语法有关: from handythread import parallel_map File "C:\Users\Ruben\Dropbox\Doctoraat\Python\handythread.py", line 55 raise a, b, c ^ Synta

SciPy网站有一个指向简单的
平行地图的链接,它似乎非常方便地使用它所处的位置)。不幸的是,由于Python2和Python3的一些差异,代码在我的环境中不起作用

我得到的错误与
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

@justhalf的建议非常合理,但如果您想正确地执行,请按照本文中的说明进行操作(搜索“三个表达式raise语句将从转换而来”)。或者您可以通过
2to3
运行脚本,该脚本将自动执行

在本例中,他们获取
sys.exc_info()
元组并将其存储到
异常
列表中:

e = sys.exc_info()
exceptions.append(e)
sys.exc_info()
返回
(类型、值、回溯)
,因此您可以重新引发原始异常:

a, b, c = exceptions[0]
raise b
但我建议:

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

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

如果这只是一个例外,您可以提出任何问题,对吗?有点黑客,但你的代码会运行。不管怎样,从文档来看,您似乎应该使用回溯(c)