Python多处理初始化池

时间:2017-10-11 17:02:32

标签: python multiprocessing pool

我有一个大的只读对象,我希望子进程使用但不幸的是这个对象无法被pickle。鉴于它是只读的,我考虑将其声明为全局,然后在Pool中使用初始化函数,我执行必要的复制。我的代码类似于:

const TRIM_VALUE_ACCESSOR = {
  provide: NG_VALUE_ACCESSOR,
  // tslint:disable-next-line:no-forward-ref
  useExisting: forwardRef(() => NgxTrimDirective),
  multi: true
};

@Directive({
  selector: 'input[ngxTrim]',
  providers: [TRIM_VALUE_ACCESSOR]
})
export class NgxTrimDirective implements ControlValueAccessor {
  _onChange(_: any) { }
  _onTouched() { }
  registerOnChange(fn: (value: any) => any): void { this._onChange = fn; }
  registerOnTouched(fn: () => any): void { this._onTouched = fn; }
  constructor (
    private _renderer: Renderer2,
    private _elementRef: ElementRef
  ) { }

  writeValue(value: any): void {
    value && this._renderer.setProperty(this._elementRef.nativeElement, 'value', value);
  }

  @HostListener('keyup', ['$event.target'])
  _onKeyUp(element: HTMLInputElement) {
    let val = element.value.trim();
    this.writeValue(val);
    this._onChange(val);
  }
}

函数setGlobal执行初始化。我的第一个问题涉及setGlobal的参数(它们作为列表传递)。这些需要可以腌制吗?我得到的错误似乎暗示他们这样做。如果是这样,我如何使我的子进程可以看到不可读的只读对象?

0 个答案:

没有答案