私は、次の機能を持っている:Python:スレッドや例外で何が問題になりましたか?
def getSuggestengineResult(suggestengine, seed, tablename):
table = getTable(tablename)
for keyword_result in results[seed][suggestengine]:
i = 0
while True:
try:
allKeywords.put_item(
Item={
'keyword': keyword_result
}
)
break
except ProvisionedThroughputExceededException as pe:
if (i > 9):
addtoerrortable(keyword_result)
print(pe)
break
sleep(1)
i = i + 1
print("ProvisionedThroughputExceededException in getSugestengineResult")
機能はもっとして1つのスレッドで開始されます。私はこのプロセスを持っていて、プロセスが機能するならば、その関数はスレッド内で準備ができているはずです。それ以外の場合は、再度9回試してください。今私の問題: "print(" getSugestengineResultで "ProvisionedThroughputExceededException") "印刷されませんでした。 peが印刷されるだけの例外です。だから私の問題がある?すべてのスレッドが同じ "i"で動作していますか?それとも印刷物に到達することは決してできませんか?
from multiprocessing import Lock, Process, Value
class ThreadCounter(object):
def __init__(self, initval=0):
self.val = Value('i', initval)
self.lock = Lock()
def increment(self):
with self.lock:
self.val.value += 1
def value(self):
with self.lock:
return self.val
、あなたはあなたの関数にカウンターを渡すことができます:私はあなたがすべてのあなたのスレッドが同じカウンタを持つようにしたい場合は、特定のカウンタを使用する必要が
知って良いと同じ 'i' – pwnsauce
@pwnsauceにアクセスする別のスレッドのarn'tと共有されます。しかし、なぜ私のプログラムは例外トレースバックを発音する前にメッセージを9回印刷しないのですか? – tommitomtom
あなたは出力が 'print(pe)'でプログラムが停止していることを意味していますか?あなたは 'print i'を除いて何の出力ですか? – pwnsauce