Может быть, я что-то пропустил, но exec не работал как асинхронный для меня в среде Windows, который я использовал в окнах, и он работал как charm;)
$script_exec = "c:/php/php.exe c:/path/my_ascyn_script.php";
pclose(popen("start /B ". $script_exec, "r"));
Вы не предоставили достаточно информации - это зависит от специфики создаваемого вами объекта и того, что еще вы делаете с ним в цикле. Если объект не создает циклических ссылок, он должен быть освобожден на следующей итерации. Например, код
for x in range(100000):
obj = " " * 10000000
не приведет к постоянному увеличению выделения памяти.
Это старая ошибка, которая была исправлена для некоторых типов в python 2.5. Дело в том, что python не очень хорошо собирал такие вещи, как пустые списки / словари / tupes / floats / ints. В python 2.5 это было исправлено ... в основном. Однако числа с плавающей запятой и целые числа - это синглтоны для сравнений, поэтому после создания одного из них он остается до тех пор, пока жив интерпретатор. Меня укусило это худшее, когда я имел дело с большим количеством поплавков, так как они имеют неприятную привычку быть уникальными. Это было охарактеризовано для python 2.4 и обновлено о том, что он складывается в python 2.5
Лучший способ, который я нашел, - это перейти на python 2.5 или новее, чтобы позаботиться о списках / словари / вопрос кортежей. Для чисел единственное решение - не допускать попадания большого количества чисел в Python. Я' я сделал это со своей собственной оболочкой для объекта C ++, но у меня сложилось впечатление, что numpy.array даст аналогичные результаты.
Как почтовый скрипт, я понятия не имею, что с этим произошло в python 3, но я подозрительно, что числа все еще являются частью сингла. Так что утечка памяти на самом деле является особенностью языка.
Если вы создаете циклические ссылки, ваши объекты не будут немедленно освобождены, а придется ждать, пока запустится цикл сборки мусора.
Вы можете использовать weakref для решения этой проблемы или явно удалите объекты после использования.
Вот одна вещь, которую вы можете сделать в REPL, чтобы принудительно разыменовать переменную:
>>> x = 5
>>> x
5
>>> del x
>>> x
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
NameError: name 'x' is not defined
Я нашел этот пост на форуме, где люди пытаются почти то же самое: http://nuigroup.com/forums/viewthread/3531/#44302
-121--1608009-Вы можете загрузить vPass (голосовой пароль) из http://www.basic-signalprocessing.com .
Для (vText) voice to text я могу отправить файл vText.jar на ваш адрес электронной почты. Pls notify enquiry@basic-signalprocessing.com
Компоненты разработаны для языка Java и .Net. Период распознавания составляет 5 секунд. VPass хорошо протестирован vText не является, все еще новым, поэтому еще не упакован.
с учетом, Андреас
-121--2970812- Я обнаружил, что в моем случае (с Python 2.5.1), с циклическими ссылками на классы, которые имеют методы __ del __ ()
, не только не происходит своевременный вывоз мусора, __ del __ ()
методы моих объектов никогда не получали Поэтому я использовал weakref , чтобы разорвать круговые ссылки, и все было хорошо.
Кудос Майлзу, который предоставил всю информацию в своих комментариях, чтобы я сложил это воедино.