Я не на 100% уверен, что это то, что вы хотите сделать, но я считаю, что это:
list1 = [' I am Sam', 'It is 1,2,3 ', ' It is hot right now' ]
match1 = 'I am'
match2 = 'is 1,2'
match3 = 'hot right now'
def check(the_list, *match):
return all(any(w in p for p in the_list) for w in match)))
print(check(list1, match1, match2, match3))
Вы хотите частичное совпадение, поэтому строки не обязательно должны быть равными, но совпадение должно быть подстрокой вашего списка.
Могу только утверждать, что я думал об этом (до прочтения вашего вопроса;). Сначала я бы установил места, где это действительно важно; например, точка доступа к БД. Если есть место, которое не должно выполняться в контексте «UI» (вы можете сохранить его из http://msdn.microsoft.com/en-us/library/system.threading.synchronizationcontext.current.aspx в потоке пользовательского интерфейса, а затем сравните позже с контекстом синхронизации без пользовательского интерфейса), затем Debug.BitchAndMoan () об этом. Любые более длительные вычисления (которые «должны» быть четко разделены в их собственных коллекторах, верно;) должны утверждать это.
Я думаю, вы должны, по крайней мере, сделать тип выполнения функции презентатора настраиваемым с помощью атрибута, который затем подчиняется прокси , (на всякий случай, если вы хотите, чтобы что-то было сделано серийно).
Отмена задачи на самом деле является проблемой докладчика, но у вас должен быть ссылочный объект, который сообщает, что вы хотите остановить. Если вы выберете прокси-путь, вы можете подобрать созданные потоки в список задач с помощью IAsyncResult, но по-прежнему проблема решить, какой из них должен быть отменен, если одно и то же действие разрешено вызывать несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.
По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
но у вас должен быть ссылочный объект, который сообщает, что вы хотите остановить. Если вы выберете прокси-путь, вы можете подобрать созданные потоки в список задач с помощью IAsyncResult, но по-прежнему проблема решить, какой из них должен быть отменен, если одно и то же действие разрешено вызывать несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
но у вас должен быть ссылочный объект, который сообщает, что вы хотите остановить. Если вы выберете прокси-путь, вы можете подобрать созданные потоки в список задач с помощью IAsyncResult, но по-прежнему проблема решить, какой из них должен быть отменен, если одно и то же действие разрешено вызывать несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
Если вы выберете прокси-путь, вы можете подобрать созданные потоки в список задач с помощью IAsyncResult, но по-прежнему проблема решить, какой из них должен быть отменен, если одно и то же действие разрешено вызывать несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
Если вы выберете прокси-путь, вы можете подобрать созданные потоки в список задач с помощью IAsyncResult, но по-прежнему проблема решить, какой из них должен быть отменен, если одно и то же действие разрешено вызывать несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
но по-прежнему остается проблемой решить, какое из них должно быть отменено, если одно и то же действие может быть вызвано несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
но по-прежнему остается проблемой решить, какое из них должно быть отменено, если одно и то же действие может быть вызвано несколько раз параллельно. Таким образом, вы должны предоставить задаче подходящее имя для конкретного вызова при ее запуске; что подразумевает слишком много логики на стороне View -> Presenter, вероятно, должен попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
Докладчику, вероятно, следует попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
Докладчику, вероятно, следует попросить View спросить пользователя, от какой из задач следует избавиться.По моему опыту, это обычно просто обходится с помощью событий (стиль SCSF). Если бы делал это с нуля, я бы пошел путем прокси, так как SCSF был проблемой во многих отношениях, что я сомневаюсь в здравом уме его разработчиков.
Почему бы не сделать так, чтобы используемый вами шаблон прокси-сервера принимал пару обратных вызовов для возврата результатов или отмены?