所以我花了很多时间在多处理库和所有功能上。基本上,我要完成的工作是从一个接收函数对象及其位置和关键字参数的后台线程开始一个单独的进程。
我有一个从头开始的线程,它的工作是执行通过依赖注入传递给它的函数。一旦线程检测到计划了新作业,它将接受并执行该作业。问题是我不知道该工作将花费多长时间,并且如果要经过10分钟,我想终止该工作。由于无法通过threading
模块来完成此操作,因此我决定看看multiprocessing
,因为它的进程可以终止。
依赖注入是通过装饰器解决的,该装饰器封装了传递函数对象的每个函数(旨在由线程执行)以及它的位置参数和关键字参数,这些参数将通过*
和{{ 1}}。最后的线程获取所有参数和函数对象(这有效)。
当我尝试创建**
并将工作分配给单个工作人员时,问题就开始了。由于我不知道函数输入参数,如何将Pool
和apply_async
与*
functin一起使用?
**