尝试调试存储库代码,我已设置断点并运行转换。然后,在调试控制台中我收到此警告:
df.show(1)
Evaluating: df.show(1) did not finish after 3.00 seconds. This may mean a number of things: - This evaluation is really slow and this is expected. In this case it's possible to silence this error by raising the timeout, setting the PYDEVD_WARN_EVALUATION_TIMEOUT environment variable to a bigger value. - The evaluation may need other threads running while it's running: In this case, it's possible to set the PYDEVD_UNBLOCK_THREADS_TIMEOUT environment variable so that if after a given timeout an evaluation doesn't finish, other threads are unblocked or you can manually resume all threads. Alternatively, it's also possible to skip breaking on a particular thread by setting a `pydev_do_not_trace = True` attribute in the related threading.Thread instance (if some thread should always be running and no breakpoints are expected to be hit in it). - The evaluation is deadlocked: In this case you may set the PYDEVD_THREAD_DUMP_ON_WARN_EVALUATION_TIMEOUT environment variable to true so that a thread dump is shown along with this message and optionally, set the PYDEVD_INTERRUPT_THREAD_TIMEOUT to some value so that the debugger tries to interrupt the evaluation (if possible) when this happens.
就我而言,这是第一个选项,因为我在等待片刻后得到了结果。所以,我想消除警告。我尝试过失败:
import os
os.environ["PYDEVD_WARN_EVALUATION_TIMEOUT"] = '90000000000000'
如何抑制警告信息?
您是指 (a) 无法设置环境变量,还是 (b) 成功设置环境变量但未解决超时问题?
如果是 (a),这就是对我有用的方法(基于创建新存储库时创建的默认 Examples.py)。我添加了日志记录来检查
PYDEVD_WARN_EVALUATION_TIMEOUT
是否已设置。在调试模式下,我可以看到它是在 os.environ
字典中设置的。
import os
from transforms.api import transform_df, Input, Output
from myproject.datasets import utils
import logging
logger = logging.getLogger(__name__)
@transform_df(
Output("/path/to/output/dataset"),
source_df=Input("/path/to/input/dataset"),
)
def compute(source_df):
os.environ["PYDEVD_WARN_EVALUATION_TIMEOUT"] = '900000'
logger.info(os.environ["PYDEVD_WARN_EVALUATION_TIMEOUT"])
return utils.identity(source_df)