Threadの基本(ロックあり)
| 登録日 | :2023/09/18 15:28 |
|---|---|
| カテゴリ | :Python基礎 |
Threadのサンプルコード
Threadを使って、処理を並列化する。
ロックを作ることで、処理を待つことも可能。たとえば、処理は並列化しておき、ファイルに書き込む部分はロックを取って実行させるということがありうる。
import logging
import threading
import time
logging.basicConfig(level=logging.DEBUG,
format='%(threadName)s: %(message)s')
def worker1(d, lock):
logging.debug('start')
with lock:
i = d['x']
time.sleep(3)
d['x'] = i + 1
logging.debug(d)
logging.debug('end')
def worker2(d, lock):
logging.debug('start')
lock.acquire()
i = d['x']
d['x'] = i + 1
logging.debug(d)
lock.release()
logging.debug('end')
if __name__ == '__main__':
d = {'x': 0}
lock = threading.Lock()
t1 = threading.Thread(target=worker1, args=(d, lock))
t2 = threading.Thread(target=worker2, args=(d, lock))
t1.start()
t2.start()