.pycをロードする仕組み

2013-10-29T00:00:00+00:00 Python

どうでも良いんですがコンパイルした?Pythonのファイルの.pycをロードするような仕組みがある模様で

# -*- coding: utf-8 -*-

class Hoge(object):
    def __init__(self):
        print self

    def say(self):
        print u"ほげ"

class Fuga(Hoge):
    pass

みたいなクラスを定義してて、でこれをimportしたりすると.pycっていうファイルとしてコンパイルされる仕組みがあると思うのですが、でこの.pycを読み込んでクラスを利用するっていう事

import marshal
#from hoge import Hoge

context = {}
bytecode = open("hoge.pyc", "r").read()
code = marshal.loads(bytecode[8:])

eval(code, globals(), context)

for key in context.keys():
    print key

    try:
        o = context[key]()
        o.say()
    except TypeError, e:
        print e

    print

結果が

Fuga
<__main__.Fuga object at 0x8f8498c>
ほげ

Hoge
<__main__.Hoge object at 0x8f849ec>
ほげ

っていう感じになる。

supervisord (3) - autostart/autorestart - supervisord (2) - signal handlers -