Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.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_Multiprocessing - Fatal编程技术网

python中使用多处理管道进行跨平台类型检查

python中使用多处理管道进行跨平台类型检查,python,multiprocessing,Python,Multiprocessing,我有一个应用程序,它使用进程和管道在它们之间进行通信。这需要跨平台,至少是Windows和OS X。代码运行良好,但我正在努力进行类型健全性检查,因为在OS X上: >>> from multiprocessing import Pipe >>> a,b = Pipe() >>> type(a) <class 'multiprocessing.connection.Connection'> 是否有一种干净的方法以平台不可知的方式

我有一个应用程序,它使用进程和管道在它们之间进行通信。这需要跨平台,至少是Windows和OS X。代码运行良好,但我正在努力进行类型健全性检查,因为在OS X上:

>>> from multiprocessing import Pipe
>>> a,b = Pipe()
>>> type(a)
<class 'multiprocessing.connection.Connection'>

是否有一种干净的方法以平台不可知的方式实现这一点?或者我是否需要到处进行操作系统检查以区分连接和管道连接?

两者都继承自_ConnectionBase,可以在multiprocessing/Connection.py中找到。只需使用该基础进行检查。

为什么类型“不同”很重要?因为如果我想进行类型检查,它很重要。PipeConnection在OS X上不存在,在Windows上isinstanceconn,Connection为False。基本上,我编写的函数旨在成为进程的目标,理想情况下,我希望验证传递给它的参数是否为Connection/PipeConnection。Python中不鼓励显式类型检查,部分原因是这样的,所以试着使用。尝试hasattrOK而不是isinstance,这是一种解决方法。也许我是python的少数派,但我认为duck类型比类型检查弱得多……我想我希望这两种类型都有一个未记录的ABC或其他东西。
>>> from multiprocessing import Pipe
>>> a,b = Pipe()
>>> type(a)
<class 'multiprocessing.connection.PipeConnection'>
assert isinstance(conn, Connection)