Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用sqlite3和matplotlib的Python线程或多进程问题_Python_Multithreading_Matplotlib_Sqlite_Multiprocessing - Fatal编程技术网

使用sqlite3和matplotlib的Python线程或多进程问题

使用sqlite3和matplotlib的Python线程或多进程问题,python,multithreading,matplotlib,sqlite,multiprocessing,Python,Multithreading,Matplotlib,Sqlite,Multiprocessing,我有一个python脚本,我想使用两个进程或线程来运行它。我被限制为两个,因为我正在连接一个只有两个许可证的api/链接。我通过导入他们的模块并实例化他们的类来获取许可证。以下是我的问题: 我需要写一个sqlitedb3。我试图共享一个db连接,将其传递给worker并让它创建自己的游标,但我会被一条数据库锁定消息卡住,似乎无论我重试多长时间,锁定都不会清除。我的程序将花费大约5分钟从模型加载数据,然后大约一分钟处理数据并插入数据库。然后在我转到下一个模型之前的最后,它执行一个提交。不过,我想我

我有一个python脚本,我想使用两个进程或线程来运行它。我被限制为两个,因为我正在连接一个只有两个许可证的api/链接。我通过导入他们的模块并实例化他们的类来获取许可证。以下是我的问题:

我需要写一个sqlitedb3。我试图共享一个db连接,将其传递给worker并让它创建自己的游标,但我会被一条数据库锁定消息卡住,似乎无论我重试多长时间,锁定都不会清除。我的程序将花费大约5分钟从模型加载数据,然后大约一分钟处理数据并插入数据库。然后在我转到下一个模型之前的最后,它执行一个提交。不过,我想我可以接受只创建两个独立的数据库

写入数据库后,我使用matplotlib创建一些绘图和图像,然后将它们保存到具有唯一名称的文件中。我不断得到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模块吗?那么以后如何重新加载呢?经过一些调查,我的问题似乎有所不同,所以我对上面的内容进行了编辑