Tag: многопоточность

Почему GridSearchCV в scikit-learn порождает так много потоков

Вот вывод pstree моего текущего запуска GridSearch, мне любопытно посмотреть, какие процессы происходят, и я еще ничего не могу объяснить. ├─bash─┬─perl───20*[bash───python─┬─5*[python───31*[{python}]]] │ │ └─11*[{python}]] │ └─tee └─bash───pstree Я удалил материал, который не имеет отношения. Целые фигурные скобки означают потоки. Появление perl связано с тем, что я использовал parallel -j 20 для запуска моих заданий на […]

Отправьте задание в цикл событий asyncio

Я хотел бы отправить задания из потока в asyncio событий asyncio (как run_in_executor, но наоборот). Вот что говорит asyncio документация о параллелизме и многопоточности : Чтобы запланировать обратный вызов из другого потока, следует использовать метод BaseEventLoop.call_soon_threadsafe (). Пример для планирования сопрограммы из другого потока: loop.call_soon_threadsafe(asyncio.async, coro_func()) Это прекрасно работает, но результат сопрограммы потерян. Вместо этого […]

Вызов кода Python из потока C

Я очень смущен тем, как точно я могу обеспечить безопасность потоков при вызове кода Python из потока C (или C ++). Документация Python, похоже, говорит, что обычная идиома для этого: PyGILState_STATE gstate; gstate = PyGILState_Ensure(); /* Perform Python actions here. */ result = CallSomeFunction(); /* evaluate result or handle exception */ /* Release the thread. […]

Запросы на Python иногда зависают

У меня есть программа Python, которая параллельно отправляет несколько запросов (около 5-6) запросов опроса, используя разные потоки для каждого опроса через пакет запросов. И я понял, что некоторые из моих потоков иногда просто замерзают. Когда это произойдет, сервер, на который я отправляю запрос, не получает запрос. Также я установил тайм-аут запроса, и он не работает. […]

Нити Python в C

Я пишу многопоточную программу в C. Перед созданием потоков глобальная среда python инициализируется вызовом Py_Initialize() . Затем в каждом созданном потоке глобальная среда python является общей, и каждый поток вызывает метод python с параметрами, преобразованными в C. Все работает хорошо, пока здесь. Когда я использую time.sleep() в загруженных модулях python, программа C вызывает Segmentation Fault […]

Как распаковать несколько файлов gz в python, используя многопоточность?

У меня есть несколько файлов gz с общим размером около 120 ГБ. Я хочу разархивировать (gzip) эти файлы в тот же каталог и удалить существующий gz-файл. В настоящее время мы делаем это вручную, и у вас больше времени на распаковку, используя gzip -d <filename> . Есть ли способ, которым я могу разархивировать эти файлы параллельно, […]

Многопоточность с Python и C api

У меня есть программа на C ++, которая использует C api для использования моей библиотеки Python. И библиотека Python, и код C ++ являются многопоточными. В частности, один поток программы на C ++ создает объект Python, который наследует от threading.Thread . Мне нужно, чтобы все мои потоки C ++ могли вызывать методы для этого объекта. […]

Подбирая пункты прогрессивно, как только появится очередь

Я ищу надежную реализацию, чтобы позволить мне постепенно работать через список элементов, используя Queue . Идея состоит в том, что я хочу использовать определенное количество рабочих, которые будут проходить через список из 20+ задач с интенсивной базой данных и возвращать результат. Я хочу, чтобы Python начинал с пяти первых элементов, и как только это делается […]

Что-то похожее на Java Thread.yield () в Python? Это даже имеет смысл?

Я хочу сказать, что мои потоки Python уступают, и поэтому избегайте чрезмерного использования процессора. В Java вы можете сделать это с помощью функции Thread.yield() . Я не думаю, что в Python есть что-то подобное, поэтому я использовал time.sleep(t) где t = 0.00001 . При t=0 эффект не имеет. Я думаю, что, возможно, есть что-то, что […]

Почему в примере кода есть пробел в python threading

Я читаю сообщение о потоке PyMOTW Первый пример: import threading def worker(): """thread worker function""" print 'Worker' return threads = [] for i in range(5): t = threading.Thread(target=worker) threads.append(t) t.start() Я запускаю его и получаю результат: Worker -Worker Worker -Worker Worker – это space , и формат будет разным каждый раз Но я не знаю, […]

Python - лучший язык программирования в мире.