У вас есть быстрый вопрос об общей переменной между несколькими процессами, используя Multiprocessing.Pool().
Будет ли я работать с любыми проблемами, если я обновляю глобальный список из нескольких процессов? То есть если два из процессов должны были попытаться обновить список в одно и то же время.
Я видел документацию об использовании Lock для подобных вещей, но мне было интересно, если это необходимо.
EDIT:
Способ обмена этой переменной заключается в использовании глобальной переменной в моей функции обратного вызова, "успехи", в которых я добавляю все успешные действия после завершения целевой функции:
TOTAL_SUCCESSES = []
def func(inputs):
successes = []
for input in inputs:
result = #something with return code
if result == 0:
successes.append(input)
return successes
def callback(successes):
global TOTAL_SUCCESSES
for entry in successes:
TOTAL_SUCCESSES.append(entry)
def main():
pool = mp.Pool()
for entry in myInputs:
pool.apply_async(func, args=(entry,),callback=callback)
Извините за любые ошибки синтаксиса, быстро написал это, но программа работает, просто задаваясь вопросом, добавляю ли я общую переменную, если у меня возникнут проблемы.
Спасибо заранее!