【发布时间】:2014-11-24 19:32:39
【问题描述】:
我有一个 python 脚本,我想使用两个进程或线程来运行它。我仅限于两个,因为我连接到一个只有两个许可证的 api/link。我通过导入他们的模块并实例化他们的类来获取许可证。这是我的问题:
我需要写入一个 sqlitedb3。我试图共享一个数据库连接,将其传递给“worker”并让它创建自己的游标,但我会遇到“数据库锁定”消息,而且似乎无论我继续重试多长时间,锁都不会清除。我的程序将花费大约 5 分钟从模型加载数据,然后大约一分钟处理数据并插入数据库。然后在我转到下一个模型之前,它会执行 commit()。我想我可以忍受只创建两个独立的数据库
写入数据库后,我使用 matplotlib 创建一些绘图和图像,然后将它们保存到具有唯一名称的文件中。我不断收到“未在 main() 线程中创建 QApplication”和“Xlib:意外异步回复”。我认为从线程切换到多进程可能会有所帮助
-
我想确保一次只有两个线程或进程在运行。实现这一目标的最佳方法是什么。使用线程,我正在执行以下操作:
c1 = load_lib_get_license() c2 = load_lib_get_license() prc_list = list of models to process while (len(prc_list) > 0): if not t1.is_alive(): t1 = threading.Process(target=worker,args=(c1,db_connection,prc_list.pop(0)) t1.start() if not t2.is_alive(): t2 = threading.Process(target=worker,args=(c2,db_connection,prc_list.pop(0)) t2.start() while (t1.is_alive() and t2.is_alive(): sleep(1)
【问题讨论】:
-
如何加载客户端?它是您导入的python模块吗?以后如何重新加载?
-
经过一番调查,我的问题似乎有所不同,所以我编辑了上述内容
标签: python multithreading matplotlib sqlite multiprocessing