Вот пример, подобный вашему оригиналу, но использующий многопроцессорность ...
from multiprocessing import Process, Value
def a(x):
while True:
if x.value == 10:
print('Done. x = ', x.value)
break
def b(x):
for _ in range(10):
x.value += 1
x = Value('i', 0) # integer with initial value of 0
t1=Process(target=a, args=(x,))
t2=Process(target=b, args=(x,))
t1.start()
t2.start()
Обратите внимание, что хотя я и передал x
в качестве параметра функции, похоже, что это все еще работает, если вы простоиспользуйте его как глобальный, как у вас выше. Настоящая хитрость здесь заключается в том, чтобы использовать объект multiprocessing.Value
и обращаться к нему с помощью x.value
.