Python ThreadPoolExecutor: как отправить внутри отправленной функцииPython

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

Сообщение Anonymous »

Я использую библиотеку Python concurrent.futures с ThreadPoolExecutor и хочу отправить данные внутри отправленной функции. Следующий код представляет собой минимальный пример попытки отправить f2 внутри отправленного f1:

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

import concurrent.futures

def f2():
print("hello, f2")

def f1():
print("hello, f1")
executor.submit(f2)

with concurrent.futures.ThreadPoolExecutor(16) as executor:
executor.submit(f1)
Вывод (Python 3.12):

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

hello, f1
Вывод тот же, даже если:

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

import concurrent.futures

def f2():
print("hello, f2")
return 3

def f1():
print("hello, f1")
print(executor.submit(f2).result())

with concurrent.futures.ThreadPoolExecutor(16) as executor:
executor.submit(f1)
Но этот код работает:

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

import concurrent.futures

def f2():
print("hello, f2")
return 3

def f1():
print("hello, f1")
return executor.submit(f2).result()

with concurrent.futures.ThreadPoolExecutor(16) as executor:
print(executor.submit(f1).result())
Выход:

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

hello, f1
hello, f2
3
Почему f2 не вызывается в примере 1?
Обновление:
Без with, вывод примера 1 является случайным (т.е. иногда выводит hello, f2, а иногда нет)

Реальный использование:

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

import concurrent.futures

def f3():
print("hello, f3")

def f2():
print("hello, f2")
for i in range(10):
executor.submit(f3)

def f1():
print("hello, f1")
for i in range(10):
executor.submit(f2)

with concurrent.futures.ThreadPoolExecutor(16) as executor:
for i in range(10):
executor.submit(f1)
Поэтому мне нужно простое решение.

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

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

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

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

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

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Python ThreadPoolExecutor: как отправить внутри отправленной функции
    Anonymous » » в форуме Python
    0 Ответы
    15 Просмотры
    Последнее сообщение Anonymous
  • Python ThreadPoolExecutor: как отправить внутри отправленной функции
    Anonymous » » в форуме Python
    0 Ответы
    18 Просмотры
    Последнее сообщение Anonymous
  • Python ThreadPoolExecutor: как отправить внутри отправленной функции
    Anonymous » » в форуме Python
    0 Ответы
    17 Просмотры
    Последнее сообщение Anonymous
  • Python ThreadPoolExecutor: как отправить внутри отправленной функции
    Anonymous » » в форуме Python
    0 Ответы
    19 Просмотры
    Последнее сообщение Anonymous
  • Python ThreadPoolExecutor: как отправить внутри отправленной функции
    Anonymous » » в форуме Python
    0 Ответы
    24 Просмотры
    Последнее сообщение Anonymous

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