2014-11-24 47 views
0

我有一个python脚本,我想运行使用两个进程或线程。我限于两个,因为我连接到只有两个许可证的api /链接。我通过导入他们的模块并实例化他们的类来获取许可证。这里是我的问题:Python线程或与sqlite3和matplotlib多线程问题

  1. 我需要写一个sqlitedb3。我试图共享一个数据库连接,将它传递给“worker”并让它创建自己的游标,但是我会被一个“数据库锁定”消息卡住,似乎无论多久我都要重试,锁都不清除。我的程序将花费大约5分钟从模型加载数据,然后大约一分钟处理数据并插入数据库。然后在我移动到下一个模型之前,它做了一个commit()。我想我可以通过创建两个单独的数据库来生活,但是它使用matplotlib创建一些图表和图像,然后将它们保存到具有唯一名称的文件中。我不断收到“QApplication未在main()线程中创建”和“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) 
    
+0

你如何加载客户?它是一个你导入的python模块吗?你以后如何重新加载? – tdelaney 2014-11-24 19:40:20

+0

经过一番调查,似乎我的问题是不同的,所以我编辑了上述 – eng3 2014-11-25 13:39:32

回答