0
私はPython3.4でマルチプロセッシングモジュールを使用しています。何らかの理由で私はでisinstance()を使用して、次のエラーを取得する:isinstance racing typeError(マルチプロセッシングで使用する場合)Lock
は>>> 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
と同じことをしようとした場合のに対し、それが動作を
>>> from datetime import datetime, timedelta
>>> isinstance(datetime.now(), datetime)
True
私が試した何を:私はチェック
ロックがコンソールと日時の間にどのように表示されるかを見てください。
>>> 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
なぜ、コンソールはそれを「バインドされた方法」と呼びますか? Lockインスタンスでisinstance()を使用するにはどうすればよいですか?
で定義されています。 'Lock'はクラスではありません。なぜあなたはそれが –
であると言うのか分かりません。 'bound method DefaultContext.Lock' ...ロックではなくクラスを返すメソッドです。 – mata
私はpyCharmを使用しています。そのクラス定義はCtrl +「ロック」をクリックしたときのものです。それはマルチプロセッシングです\\ __ init__.py –