- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在使用池来启动 python3.6 中的工作进程。工作人员在完成后将返回 True 或 False,我想知道使用 AsyncResult 返回对象或使用回调函数来检查工作人员是否返回 True 或 False 之间有什么区别。根据我的理解,回调是在主进程中调用的,无论如何我都会在同一个地方进行检查。
#Using the AsyncResult way
def check_result(result):
if result:
#Successful do something
else:
#Failed
with Pool() as pool:
result = pool.apply_async(upload, (args, ))
check_result(result.get())
#Using callbacks
def check_result(result):
if result:
#Successful do something
def err_result(result):
#Do something
with Pool() as pool:
pool.appy_async(upload, (args,), callback=check_result, error_callback=err_result)
我看到在python3.6中它们允许error_callback,那么这两段代码是否等效?两者各有什么优缺点?
谢谢
最佳答案
AsyncResult
和 callback
之间的比较有点不幸。 请注意,您只有可用于异步方法的回调(返回 AsyncResult
对象),因此本故事中没有关于这些事情的“对立”。
当您编写 check_result(result.get())
时,您不会将一些 AsyncResult
对象传递到 check_result
中,而是传递一个已经等待正常结果,在您的情况下是 bool 值(如果不是异常(exception))。因此,这不是 AsyncResult
和 callback
之间的区别,而是在结果上手动调用 check_result
或预先注册回调之间的区别。
I see that in python3.6 they allow error_callback, so are these two bits of code equivalent? What are the pros and cons of both?
不,这两个片段并不等同。 error_callback
是一个异常处理程序,您可能的 False
结果不会触发它,但异常会触发。在这种情况下,err_result
中的 result
参数将填充异常实例。与上面代码片段的不同之处在于,一旦您调用 result.get()
并且您没有将其包含在 try-except-block 中,异常就会在您面前爆炸。
error_callback
的明显“优点”是省略了 try-except-block,常规回调的“优点”也是减少了代码长度。仅将两者用于立即返回的任务,例如检查和日志记录,以防止阻塞池中运行的线程。
关于python - AysncResult 和 python 池中 error_callback 回调之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52613759/
我正在使用池来启动 python3.6 中的工作进程。工作人员在完成后将返回 True 或 False,我想知道使用 AsyncResult 返回对象或使用回调函数来检查工作人员是否返回 True 或
multiprocessing.Pool 类的函数 apply_async 在 Python 3 中有参数 error_callback。但是 Python 2 中缺少此参数。 有什么技巧可以在 Py
我是一名优秀的程序员,十分优秀!