Connection
时会创建 multiprocessing.Pipe
个对象。但是,目前尚不清楚如何检查对象是否是Connection
的实例。
在Python3(3.4,3.3,... 3.2)中,要检测Connection
的实例,我可以这样做:
from multiprocessing.connection import Connection
if isinstance(f, Connection):
print("f is a Connection to a Pipe")
from multiprocessing.dummy.connection import Connection
也适用于所有Python3,但不适用于Python2。
但是,这会导致ImportError
使用Python2。我怎么能可靠地检查Connection对象?
答案 0 :(得分:1)
Python 2和3 w之间存在显着的实现差异。河吨。多处理连接对象。在Python 2中,您可以通过以下方式导入它们:
from _multiprocessing import Connection
在Python 2中,Connection
类在辅助模块_multiprocessing
中实现,用C语言编写(源here)。我认为它是用C语言编写的,以便更好地访问Windows API,并可能出于性能原因。我假设在Python 3的情况下,实现命名管道所需的特殊Windows API调用已经外部化到winapi模块。
根据Python版本,您可以轻松地从multiprocessing.connection
或_multiprocessing
导入连接,以便您的代码同时在Python 2和3上运行。
答案 1 :(得分:0)
假设您的对象可能与Connection有很大不同,您可以执行以下操作:
SELECT *
FROM
(SELECT * FROM A SAMPLE 1000) t1
LEFT JOIN
(SELECT * FROM B SAMPLE 1000) t2
ON t1.col = t2.col
这将是可移植的,无需在Python 2中导入私有类。