pythonでtupleをつくる
pythonのthreadで引数を渡したい
Djangoで時間のかかる処理をスレッド化して逃げようとしたのですがうまくいかなかったのでメモ。
threading.Thread
にはいくつか引数が渡せます。
- group
- target
- name
- args
- kwargs
詳しくはここで。
で、スレッド化したい処理に引数を渡そうと思って下記のように実装しました。
すると、printされた文字列が
('s', 'l', 'e', 'e', 'p', ' ', '1', '0', ';', 'e', 'c', 'h', 'o', ' ', 'a', 'a', 'a')
となるわけです。
何が起きてるんだ状態です。
調べてみると原因は「args
にtupleを渡してあげる」というところにありました。
pythonでtupleをつくる
tuple = (1, 2)
基本はこれ。
では、今回のように長さ1のtupleはどうやってつくるか
長さ1のtuple
tuple = (1)
普通のpythonistであればこれは違うとわかるでしょうが、これだと思うでしょう?
なんですよね。
どうするのか
tuple = (1,)
こうでした。
けっか
こうしてあげることによって期待通りの動きをしてくれました。
tupleの作り方に注意しなさい的な記述をどこかで見たような気がしたのですが、すっかり失念しておりました。猛省。