python thread event sqlite

5 篇文章 0 订阅
2 篇文章 0 订阅
import threading
import time
import sqlite3

event = threading.Event()
conn = sqlite3.connect('test.s3db', check_same_thread=False)
cur = conn.cursor()

lock = threading.Lock()

def foo():
    global  count
    while not event.is_set():  # 返回event的状态值,同isSet
        count += 1
        if count % 10000 != 0: # 一万次insert才commit,提高效率
            lock.acquire(True) # 加锁来避免数据成功写入
            try:
                cur.execute('''insert into test(id,name) values(?,?)''', (1, 'good boy'))
            except:
                print(count)
            lock.release()
        else:
            conn.commit()

    print("connect to server")


for i in range(5):  # 5个子线程同时等待
    t = threading.Thread(target=foo, args=())
    t.start()

print("start server successful")
time.sleep(10)
event.set()  # 设置标志位为True,event.clear()是回复event的状态值为False
time.sleep(1)
cur.close()
conn.close()

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值