Совместное использование блокировки между процессами Python в другом файлеPython

Программы на Python
Ответить Пред. темаСлед. тема
Anonymous
 Совместное использование блокировки между процессами Python в другом файле

Сообщение Anonymous »

Я пытаюсь использовать функцию многопроцессорной карты для выполнения функции над моим списком. Однако в этой функции я выполняю некоторые вызовы API, которые нельзя выполнить одновременно, поскольку они перегружают API. Однако мой код распределен по нескольким файлам, поскольку он довольно длинный.
Я пытался следовать этому решению, но оно у меня не работает. Я подозреваю, что это не работает, потому что я работаю с несколькими файлами. Конкретная ошибка, которую я получаю: NameError: имя «блокировка» не определено.
Настоящим упрощение моего кода:
main.py< /p>

Код: Выделить всё

import file2

def evaluate_entry_of_list(entry):
response = file2.get_data(entry)
# some calculations
return results

def init_pool(given_lock):
global lock
lock = given_lock

if __name__ == '__main__':

list = apicaller.get_list()
t_lock = Lock()
with Pool(8, initializer=init_pool, initargs=(t_lock,)) as pool:
results = pool.map(evaluate_entry_of_list, list)
process_results(results)
file2.py

Код: Выделить всё

def make_call(url, body)-> requests.Response:
lock.acquire()
# Make API call
lock.release()
return response
Другие решения, которые я пробовал: определение переменной в main и импорт в файл2, а также использование отдельного класса для создания статической переменной и импорта в файл2.

Подробнее здесь: https://stackoverflow.com/questions/789 ... other-file
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение

Вернуться в «Python»