首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >长时间运行的工作线程阻止GIL超时错误

长时间运行的工作线程阻止GIL超时错误
EN

Stack Overflow用户
提问于 2020-02-02 01:13:45
回答 1查看 194关注 0票数 1

我在dask.delayed工作负载上使用带有本地设置的dask-distributed (具有5个工作进程的LocalCluster)。大部分工作是由vtk Python绑定完成的。因为vtk是基于C++的,所以我认为这意味着在长时间运行的语句中,工作者不会释放GIL。当我运行工作负载时,我的终端打印出一堆错误,如下所示:

代码语言:javascript
复制
Traceback (most recent call last):
  File "C:\Users\patri\AppData\Local\Continuum\anaconda3\lib\site-packages\distributed\comm\core.py", line 221, in connect
    _raise(error)
  File "C:\Users\patri\AppData\Local\Continuum\anaconda3\lib\site-packages\distributed\comm\core.py", line 204, in _raise
    raise IOError(msg)
OSError: Timed out trying to connect to 'tcp://127.0.0.1:49721' after 10 s: connect() didn't finish in time

然而,我的工作负载仍然很好-我在命令行上收到了一堆错误,但它一直在继续。因此,我认为工作人员没有崩溃,但心跳通信停止。既然我不想为了发布GIL而搞乱vtk内部,我该如何修复这些错误呢?我收到了太多这样的良性超时错误,以至于我看不到可能发生的任何真正的错误。

EN

回答 1

Stack Overflow用户

发布于 2020-02-10 16:37:30

通过休眠VTK事件循环线程暂时释放GIL。如果您使用的是vtkWindowRendererInteractor实例,请使用内置的sleep创建一个带有回调的计时器,该回调会使执行稍作休眠。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60019241

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档