実行時に C 関数を動的に生成/ロードするために、さまざまな Python コード ベースで見た一般的なイディオムは次のとおりです。
import tempfile
import shutil
from ctypes import CDLL
workdir = tempfile.mkdtemp()
try:
# Generate and write code in workdir
# ...
# Compile and link into an .so/.dylib/.dll
# ...
lib = CDLL(path_to_lib)
finally:
shutil.rmtree(workdir)
これは *nix システムではうまく動作するように見えますが、Win32 でうまく動作するかどうかはわかりません。これは、私の経験では、一時ディレクトリ内の .dll がプロセスにマップされている場合、リンクを解除できないためです。したがって、rmtree
失敗します。
Win32で.dll(およびそれが存在するディレクトリ)をできるだけ早く削除するために使用できるオプションは何lib
ですか約)。