[Python] 265 日付・時刻の文字列化関数

前回記事の続きです。

日付・時刻の文字列化コードは使用頻度がかなり高いため関数にしました。

import datetime

datetime_now = datetime.datetime.now()

def now():
    datetime_now_str = datetime_now.strftime('%y%m%d%H%M')
    return datetime_now_str

def today():
    datetime_today_str = datetime_now.strftime('%y%m%d')
    return datetime_today_str
from my_library import date

print(date.now())
print(date.today())
--------------------------------------------------

出力
--------------------------------------------------
2106081330
210608

[Python] 264 日付・時刻の文字列化

ファイル名に今日の日付や現在時刻を付ける場合の文字列作成コードです。

import datetime

datetime_now = datetime.datetime.now()
datetime_now_str = datetime_now.strftime('%y%m%d%H%M')
datetime_today_str = datetime_now.strftime('%y%m%d')

filename_now = f"/{datetime_now_str}.csv"
filename_today = f"/{datetime_today_str}.csv"

print(filename_now)
print(filename_today)
--------------------------------------------------

出力
--------------------------------------------------
/2106080730.csv
/210608.csv

[Python] 263 C言語でモジュールを作成

[macOS Catalina 10.15.7]

これまで自作モジュールはPythonで書いてきましたが、高速化が必要な場合にC/C++モジュールで対応するためテストしてみました。

1.C言語モジュールの作成

#include <Python.h>

static PyObject* 
hello_world (PyObject *self, PyObject *args) {
  printf("Hello_world\n");
  Py_RETURN_NONE;
}

// メソッドの定義
static PyMethodDef TestMethods[] = {
  {"hello_world", (PyCFunction)hello_world, METH_NOARGS, "test1: hello_world"},
  {NULL, NULL, 0, NULL}
};

// モジュールの定義
static struct PyModuleDef testmodule = {
  PyModuleDef_HEAD_INIT,
  "test",
  NULL,
  -1,
  TestMethods
};

// メソッドの初期化
PyMODINIT_FUNC PyInit_test (void) {
  return PyModule_Create(&testmodule);
}

2.setup.pyの作成

from distutils.core import setup, Extension
setup(name='test',
        version='1.0',
        ext_modules=[Extension('test', ['test.c'])]
)

3.C言語モジュールのビルド

python setup.py build_ext -i

4.C言語モジュールの動作チェック

作成されたtest.cpython-39-darwin.soファイルをあらかじめ用意しておいたc_moduleフォルダへコピーし、以下のコードを実行。

c_moduleフォルダをライブラリとして認識させるため、フォルダ内に空の__init__.pyを置くようにする。

そしてc_moduleフォルダまたはシンボリックリンクをこのコードと同じところに置く。

なお今後のためにc_moduleフォルダを作成しましたが、soファイルをソースコードと同じところに置くだけでも1行目”import test”にて実行可能です。

from c_module import test

test.hello_world()
--------------------------------------------------

出力
--------------------------------------------------
Hello_world

参考サイト