私はここに運が出ていないように見える...あなたに聞いて申し訳ありません。 :(Pythonマルチプロセッシング: "self。"変数が他の関数で更新されていませんか?
私は次の操作を実行しようとしています:
import multiprocessing
import time
class TestClass(multiprocessing.Process):
def __init__(self):
super(TestClass, self).__init__()
print("Initializing the test class...")
self.VARIABLE = 0
def run(self):
while self.VARIABLE < 10:
print("Sleeping... Variable now: " + str(self.VARIABLE))
time.sleep(1)
def setVar(self, VALUE):
print("Setting new value from " + str(self.VARIABLE) + " to " + str(VALUE) + " ...")
self.VARIABLE = VALUE
if __name__ == "__main__":
TESTPROCESS = TestClass()
TESTPROCESS.start()
time.sleep(5)
TESTPROCESS.setVar(5)
time.sleep(5)
TESTPROCESS.setVar(10)
しかし、結果で、それが実行中self.VARIABLEを(更新しない)が、唯一のSETVARで()
。c:\Python35\python.exe Test.py
Initializing the test class...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Setting new value from 0 to 5 ...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Sleeping... Variable now: 0
Setting new value from 5 to 10 ...
Sleeping... Variable now: 0
Sleeping... Variable now: 0
[...]
が、私は「自己」は、これは、このクラス/オブジェクトのための「グローバル」のパラメータがあることを、示すことになる、と思った私が持っているために、実行()関数を変更しても
「真の中: - ?> break "ループでも同じ問題が発生します。私の思考ミス?予め
おかげ...
* facepalm *はい。あなたは正しいです...私はそれをもっと複雑なシナリオですでに使用していますが、複雑さのために私はそれを単純にしたいと思っていました。 - ここでも簡単です。 - Mea culpa。 :) – Bigfoot29