C# многозадачное потребление python потока - PullRequest
1 голос
/ 18 июня 2020

Мне нужно использовать данные из python API. Я вызываю это из C# Windows Form / System.Diagnostics.Process. Я знаю, как это сделать.

Чтобы исключить повторяющиеся вызовы из API и использовать async / task из формы Windows, я хотел бы получить ваши предложения по асинхронному / многопоточному подходу к следующей структуре. Пожалуйста, извините за псевдокод для простоты.

WindowsFormEvent()

    (Get a List of Items from database, I know this one)
    (Process Items (ProcessItems) in List in an async/multi-threaded way to increase performance and keep UI responsive)

    for each (item in List)
    {
         (do Something)      (these are not dependent on each other and can preferably run 
                              at the same time. These is called from a windows.form object 
                              and we need to wait here to keep windows form responsive?)
    }

Something

    {
          (run a python process, utilize StreamReader() that gives us List<string> results.
 
          #iterate over results
          (fire off x number of (threads/Tasks) to process each <List>item in results)
                  (lets say fire of 20 and then when, once one is done fire off another 
                   until all are done)(total list might be 2000 items
     }

Очевидно, это вопрос архитектуры. Я не жду точного кода. Если бы вы могли дать хорошее представление о структуре методов / задач / ожиданий для завершения этого logi c, я был бы в восторге и напишу окончательное решение. К сожалению, API не совсем реляционный.

...