pythonでthreading

creation date 2016/10/11 22:32 last date modified 2016/11/22 01:32 | category: | tags: Python
スポンサード リンク

Pythonでコードを非同期実行したかった。 threading モジュールが一番お手軽にこれを実現できるようだ。

次のコードを実行するとスレッド数は2に抑えながら,現在時刻をUnixtimeで表示する。

テストコード

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import threading as th
import datetime
import time

max_semaphore = 2
s = th.Semaphore(max_semaphore)


def lazy_counter(counter):
    time.sleep(1)
    print counter, th.active_count(), datetime.datetime.now().strftime("%s")
    s.release()


if __name__ == "__main__":
    for i in range(20):
        s.acquire(True)
        th.Thread(target=lazy_counter, kwargs={"counter": str(i)}).start()

実行結果

0 3 1479745771
1 3 1479745771
2 3 1479745772
3 3 1479745772
4 3 1479745773
5 3 1479745773
6 3 1479745774
7 3 1479745774
8 3 1479745775
9 3 1479745775
10 3 1479745776
11 3 1479745776
12 3 1479745777
13 3 1479745777
14 3 1479745778
15 3 1479745778
16 3 1479745779
17 3 1479745780
18 3 1479745781
19 2 1479745781

Comments !

social