joblib によって謎のバグが起こる

Python
スポンサーリンク

joblib 0.14.1 にて確認.0.13.2 だと起こらない.import joblib を消すと正常に動く.

#! /usr/bin/env python
# -*- coding: utf-8 -*-
# vim:fenc=utf-8

import pandas as pd
import multiprocessing
import os

import numpy as np
import pandas as pd
import joblib


def method(df_path):
    print("starting method")
    df = pd.read_pickle(df_path)
    print("pickle loaded")
    df.copy()
    print("exit method")


def main():
    df = pd.read_pickle("df")
    df.copy()

    print("Starting pool")
    pool = multiprocessing.Pool(1)
    pool.map(method, ['df' for _ in range(10)])


if __name__ == "__main__":
    main()

このように Main Thread で Pandas のデータフレームの何かしらの操作を行った上で, multiprocessing.Pool.map をすると map 内部の処理がハングする.DataFrame の内部のデータの種類,もしくは量によって起こる起こらないがあるみたいだけど未確認.ここでの pickled data は公開できないため,これでとどめておく.

Issue あげときました.

コメント

タイトルとURLをコピーしました