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模块是否是线程安全的?_Python_Multithreading_Thread Safety - Fatal编程技术网

如何评估python模块是否是线程安全的?

如何评估python模块是否是线程安全的?,python,multithreading,thread-safety,Python,Multithreading,Thread Safety,我首先想到的是如何确定线程是否安全。pubsub可能有点棘手或复杂,但pydispatcher似乎很容易实现。然后我开始思考如何判断python模块是否线程安全。有什么启发法吗?从理论的角度来看:没有任何算法可以对任意程序执行此操作。这就像是一场战争 您可以检查所使用的模块,并检查这些模块是否被授予线程安全。但是没有通用的方法来检查模块的字节码的线程安全性 为了确定库或应用程序是否是线程安全的,在没有作者输入的情况下,我会寻找同步线程的机制: 或者它包含线程方法: 但是,这些都不能告诉您如何以线

我首先想到的是如何确定线程是否安全。pubsub可能有点棘手或复杂,但pydispatcher似乎很容易实现。然后我开始思考如何判断python模块是否线程安全。有什么启发法吗?

从理论的角度来看:没有任何算法可以对任意程序执行此操作。这就像是一场战争


您可以检查所使用的模块,并检查这些模块是否被授予线程安全。但是没有通用的方法来检查模块的字节码的线程安全性

为了确定库或应用程序是否是线程安全的,在没有作者输入的情况下,我会寻找同步线程的机制: 或者它包含线程方法:

但是,这些都不能告诉您如何以线程安全的方式使用API。实际上,任何东西都可以填充到线程对象中,并使用线程同步对象与之通信

对于pubsub之类的东西,可以创建一个类来封装API并以独占方式通过队列进行通信。例如,如果pubsub与wx生活在同一个线程中,那么可以创建一个API,使用用于发送消息的线程API将消息注入队列。然后一个pubsub循环或计时器可以监视队列。然后它会发送消息。包装pubsub之类的东西的一个问题是,在某些地方它需要轮询。如果投票是由计时员进行的,那么投票是透明的。如果pubsub不在该线程中,则每个线程都必须分配一个计时器来接收消息。可能有更优雅的方法来解决这个问题,但我不知道它们。

他说“任何启发式”,他并不是在寻找一个精确的、通用的解决方案。我也怀疑他说的是看字节码。