グローバル変数を1つのプロセスに設定し、別のプロセスから読み込もうとしています。 は、これは私がやっているものを基本的には次のとおりです。グローバル変数は、別の関数から呼び出されたときに値が異なります
私はこのコードがやるべきことだと思う何from multiprocessing import Process
import time
rocket = 0
def func1():
global rocket
while rocket < 10:
rocket += 1
print("Func1: " + str(rocket))
time.sleep(5)
def func2():
while rocket < 10:
print ("Func2: " + str(rocket))
time.sleep(1)
if __name__=='__main__':
p1 = Process(target = func1)
p1.start()
p2 = Process(target = func2)
p2.start()
:
- func1のは1、5秒ごと
- 毎秒func2のことで、グローバル変数「ロケット」を高めますグローバル変数ロケットを読み込み、2つの方法が「ロケット」== 10
だから、期待される出力のようなものでなければなりません:
Func1: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func2: 1
Func1: 2
Func2: 2
Func2: 2
#... and so on
しかし、実際の出力のような行く:
Func1: 1
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func2: 0
Func1: 2
Func2: 0
Func2: 0
#... and so on
func2の 'ロケット' から印刷する場合は、必ず0
ままI 'は宣言していますfunc1のグローバル変数としてのロケット 'as you should
私はここで何が欠けていますか?
の可能性のある重複した[グローバル変数の更新をマルチプロセッシングPythonの親に戻っていない](HTTPS
The docu has an example on this.
は、だから、このような何かを行うことができます。 //stackoverflow.com/questions/11055303/python-multiprocessing-global-variable-updates-not-returned-to-parent) –