用于多处理L时出现isinstance raising typeError

2024-04-26 06:18:18 发布

您现在位置:Python中文网/ 问答频道 /正文

我在Python3.4上使用多处理模块。由于某些原因,我在使用isinstance()时遇到以下错误:

>>> from multiprocessing import Lock
>>> isinstance(Lock(), Lock)
Traceback (most recent call last):
  File "<input>", line 1, in <module>
TypeError: isinstance() arg 2 must be a type or tuple of types

但是如果我对datetime尝试相同的方法,它会起作用

^{pr2}$

我尝试了:

当我查看锁在控制台中的显示方式vs datetime时,我得到以下结果:

>>> Lock()
<Lock(owner=None)>
>>> Lock
<bound method DefaultContext.Lock of <multiprocessing.context.DefaultContext object at 0x00000000039810B8>>
>>> datetime.now()
datetime.datetime(2016, 6, 13, 11, 24, 12, 573712)
>>> datetime
<class 'datetime.datetime'>

但下面对其定义的锁定表明它确实是一个类。在

class Lock(object):
    def acquire(self, blocking=True, timeout=-1):
        pass

    def release(self):
        pass

那么为什么控制台称它为“绑定方法”。如何在锁实例上使用isinstance()?在


Tags: 模块of方法selflockdatetimeobjectdef
1条回答
网友
1楼 · 发布于 2024-04-26 06:18:18

我的PyCharm IDE似乎引导我找到了一个与运行isinstance时解释的锁不同的定义。后者是一个函数。我要查找的锁类是在multiprocessing.synchronize.py中定义的

>>> from multiprocessing import Event, Lock, synchronize
>>> isinstance(Lock(), synchronize.Lock)
True

相关问题 更多 >

    热门问题