嗯,我最初想到的是如何确保pydispatcher或pubsub是否是线程安全的。 pubsub可能有点棘手或复杂,但pydispatcher似乎很容易实现。然后我开始想知道如何弄清楚python模块是否是线程安全的。任何启发式方法?
答案 0 :(得分:2)
为了确定库或应用程序是否是线程安全的,没有作者输入,我会寻找同步线程的机制:http://effbot.org/zone/thread-synchronization.htm 或者它包含线程方法:http://docs.python.org/library/threading.html
但是,这些都不会告诉您如何以线程安全的方式使用API。实际上,任何东西都可以填充在线程对象中并与使用线程同步对象进行通信。
对于像pubsub这样的东西,可以创建一个包装API并通过Queues进行通信的类。例如,如果pubsub与wx位于同一个线程中,则可以创建API以使用线程API将消息注入队列以发送消息。然后pubsub循环或计时器可以监视队列。然后它会发送消息。包装像pubsub之类的问题之一就是它需要轮询。如果轮询是由计时器完成的,它可以变得透明。如果pubsub没有驻留在该线程中,则每个线程都必须分配一个计时器来接收消息。可能有更优雅的方法,但我不知道它们。
答案 1 :(得分:1)
从理论的角度来看:没有算法可以为任意程序执行此操作。它就像halting problem。
您可以检查已使用的模块并检查这些模块是否被授予线程安全性。但是没有通用的方法来检查模块的字节代码以确保线程安全。