1

前の質問からコードを実行した後、サブプロセスから次のような結果セットを取得します。

[[(<PyTime:6/10/2012 3:24:17 AM>, 1593.5, 413.0, 19.600000381469727, 430.0, 16.0, 47.0, 42.70000076293945, 15.600000381469727, 69.5), 
(<PyTime:6/10/2012 3:24:18 AM>, 1658.0, 412.0, 19.600000381469727, 429.0, 7.0, 34.400001525878906, 30.899999618530273, 15.699999809265137, 69.5), 
(<PyTime:6/10/2012 3:24:19 AM>, 1685.0, 406.0, 19.600000381469727, 425.0, 18.0, 28.700000762939453, 26.399999618530273, 15.699999809265137, 69.5)]]

これをサブプロセスから親プロセスに送信しようとするcuと、上記と同じになります。

conn.send(pickle.dumps(cu))

これにより、次のエラーが発生します。TypeError: can't pickle time objects

上記のリストを親プロセスに送り返すには、どのような回避策がありますか?

4

3 に答える 3

3

他の回答が言ったように、PyTimeオブジェクトは「ピクル可能」ではありません。datetimeそれらをピクルスにすることができる通常のオブジェクトに変換することをお勧めします。

from datetime import datetime

list_of_pytimes = [ ... ]
list_of_datetimes = [datetime.fromtimestamp(int(pytime)) for pytime in list_of_pytimes]
# Now this will work
pickle.dumps(list_of_datetimes)
于 2012-06-18T15:45:39.150 に答える
1

これらの PyTime オブジェクトは、Python の標準ライブラリの datetime オブジェクトのようには見えません。通常の日時オブジェクトは問題なくピクルしているように見えるので、変換することをお勧めします。使用しているデータベース ドライバーはわかりませんが、標準の日時オブジェクトを使用するように構成できる場合があります。

于 2012-06-18T15:34:56.453 に答える
0

andを使用してモンキーパッチPyTimeクラスを試してください(ドキュメント)。それがうまくいかない場合は、ピクル可能なタイプに変換する必要があります。__getstate____setstate__datetime.time

于 2012-06-18T15:34:41.277 に答える