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
Python asyncore回调正在启动线程。。。可以吗?_Python_Multithreading_Couchdb_Asyncore - Fatal编程技术网

Python asyncore回调正在启动线程。。。可以吗?

Python asyncore回调正在启动线程。。。可以吗?,python,multithreading,couchdb,asyncore,Python,Multithreading,Couchdb,Asyncore,我不熟悉异步编程,除了一些twisted教程的介绍外,对异步编程的了解非常有限 我最熟悉线程,并在我所有的应用程序中使用它们。一个特定的应用程序使用数据库作为其接口。这涉及到长轮询db以查找更改和更新。我用于couchdb的模块是。它使用asyncore循环监视这些更改并将它们发送到回调 所以,我想从这个回调中可以启动我的工作线程。混合使用异步和线程编程似乎有点粗糙。我真的很喜欢couchdbkit,但不想在我的程序中引入问题 所以,我的问题是,从异步回调触发线程安全吗 这里有一些代码 def

我不熟悉异步编程,除了一些twisted教程的介绍外,对异步编程的了解非常有限

我最熟悉线程,并在我所有的应用程序中使用它们。一个特定的应用程序使用数据库作为其接口。这涉及到长轮询db以查找更改和更新。我用于couchdb的模块是。它使用asyncore循环监视这些更改并将它们发送到回调

所以,我想从这个回调中可以启动我的工作线程。混合使用异步和线程编程似乎有点粗糙。我真的很喜欢couchdbkit,但不想在我的程序中引入问题

所以,我的问题是,从异步回调触发线程安全吗

这里有一些代码

def dispatch(change):
    global jobs, db_url # jobs is my queue
    db = Database(db_url)
    work_order = db.get(change['id']) # change is an id to the document that changed. 
                                  # i need to get the actual document (workorder)

    worker = Worker(work_order, db) # fire the thread
    jobs.append(worker)
    worker.start()
    return


main()
.
.
.

consumer.wait(cb=dispatch, since=update_seq, timeout=10000) #wait constains the asyncloop.
更新:


在看了更多之后,我还有一个问题要问couchdbkit大师。可能会有数百个线程使用数据库。正如您在我的代码示例中所看到的,我正在为每个线程实例化一个couchdbkit.Database对象。我认为这可能是浪费。那么,在线程之间全局使用单个数据库对象可以吗

这不是每次服务器返回新文档时都会创建一个新线程吗?我想,在调用服务器上的任何东西之前,最好先创建一个工作线程池,然后在
dispatch
方法中将一个作业添加到这些线程正在读取其工作的队列中


但是没有理由认为混合使用线程和异步编程是危险的。

是的,为每个工单创建一个新线程是一个想法。每个工人将打开一个通道,并在远程设备上执行各种维护任务。我没有考虑过线程池,但考虑到回调的使用方式,这可能是个好主意。谢谢你的意见。