Nano Hash - криптовалюты, майнинг, программирование

Сериализация «Закрытия» не допускается с php pthreads

Мне нужна небольшая помощь с pthreads в php. у меня следующий класс

namespace le\Thread;

class Thread extends \Thread
{

    protected $method;
    protected $params;
    protected $result = null;
    protected $joined = false;

    /**
     * Provide a passthrough to call_user_func_array
     **/
    public function __construct($method, $params)
    {
        $this->method = $method;
        $this->params = $params;
    }

    /**
     * The smallest thread in the world
     **/
    public function run()
    {
        if (($this->result = call_user_func_array($this->method, $this->params))) {
            return true;
        } else {
            return false;
        }
    }

    /**
     * Static method to create your threads from functions ...
     **/
    public static function process($method, $params)
    {
        $thread = new self($method, $params);
        if ($thread->start()) {
            return $thread;
        }
        /** else throw Nastyness **/
    }

    /**
     * Do whatever, result stored in $this->result, don't try to join twice
     **/
    public function getResult()
    {
        if (!$this->joined) {
            $this->joined = true;
            $this->join();
        }

        return $this->result;
    }
}

и я хочу использовать его таким образом. В другом классе у меня есть тяжелый метод ЦП, который я хочу обрабатывать многопоточно.

$thread = Thread::process([$this, 'method'], $dataArray);
$thread->getResult();

но выдает следующую ошибку

Serialization of 'Closure' is not allowed

Как я могу это исправить? Это вообще возможно?


  • Невозможность сериализовать замыкание — это ограничение, наложенное Zend; они не подходят для хранения в качестве членов объекта Threaded. 28.04.2014
  • Хорошо, я понимаю, есть ли какое-то обходное решение? Или другой способ, как достичь цели? 28.04.2014
  • Кажется, код в вашем вопросе взят из примера, распространяемого с pthreads, который содержит ответ на этот вопрос: github.com/krakjoe/pthreads/blob/master/examples/ 30.04.2014
  • Меня вдохновил этот пример. Он работает для основных функций, но не при отправке объекта в качестве атрибута. Но мне нужно обработать гораздо более продвинутые функции. 30.04.2014
  • Затем объектно-ориентированный код;) 30.04.2014

Новые материалы

Кластеризация: более глубокий взгляд
Кластеризация — это метод обучения без учителя, в котором мы пытаемся найти группы в наборе данных на основе некоторых известных или неизвестных свойств, которые могут существовать. Независимо от..

Как написать эффективное резюме
Предложения по дизайну и макету, чтобы представить себя профессионально Вам не позвонили на собеседование после того, как вы несколько раз подали заявку на работу своей мечты? У вас может..

Частный метод Python: улучшение инкапсуляции и безопасности
Введение Python — универсальный и мощный язык программирования, известный своей простотой и удобством использования. Одной из ключевых особенностей, отличающих Python от других языков, является..

Как я автоматизирую тестирование с помощью Jest
Шутка для победы, когда дело касается автоматизации тестирования Одной очень важной частью разработки программного обеспечения является автоматизация тестирования, поскольку она создает..

Работа с векторными символическими архитектурами, часть 4 (искусственный интеллект)
Hyperseed: неконтролируемое обучение с векторными символическими архитектурами (arXiv) Автор: Евгений Осипов , Сачин Кахавала , Диланта Хапутантри , Тимал Кемпития , Дасвин Де Сильва ,..

Понимание расстояния Вассерштейна: мощная метрика в машинном обучении
В обширной области машинного обучения часто возникает необходимость сравнивать и измерять различия между распределениями вероятностей. Традиционные метрики расстояния, такие как евклидово..

Обеспечение масштабируемости LLM: облачный анализ с помощью AWS Fargate и Copilot
В динамичной области искусственного интеллекта все большее распространение получают модели больших языков (LLM). Они жизненно важны для различных приложений, таких как интеллектуальные..