Библиотека Roffild'a - страница 10

 
Advanced Vector Extensions - Wikipedia
  • en.wikipedia.org
AVX2 expands most integer commands to 256 bits and introduces fused multiply-accumulate (FMA) operations. AVX-512 expands AVX to 512-bit support using a new EVEX prefix encoding proposed by Intel in July 2013 and first supported by Intel with the Knights Landing processor, which shipped in 2016.[3][4] AVX uses sixteen YMM registers. Each YMM...
 
Roffild:

Сообщение "Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2" появляется и на новых процессорах. Это известный баг в TensorFlow. К версии Python это никак не относится.

там другое сообщение что то как "...not load dll..." от Питона


так то оно так... но увы на ноутбуках разные "огрызки процессоров" устанавливают, у меня на ноуте i3 и видео GForce, ноуту если не ошибаюсь года 3-4, даже игрушки неплохо "летают", а вот с AVE как то только выяснилось

 

@Roffild, добрый день.

Установил Вашу библиотеку и сразу же поймал ошибку самой  первой проверки:

2019.07.09 21:56:43.540 PythonDLL_Example (USDRUB,D1)   ERROR: PythonHome == ""

Переменные тоже все на месте.


Что еще я забыл сделать?

Спасибо.

 
 

Да, разобрался.

Сорян за глупость.

 

Добрый день.

Начал первые шаги по применению Вашей библиотеки. За пример взял PythonDLL_Example.mq5 и PythonDLL_Example.py. Решил просто протестировать вызов-результат. Взял, сделал массив из 11 чисел и передал его в функцию. Пока функция в PythonDLL_Example.py имела вид:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

(мое первое изменение ))) )все работало как положено. В силу того, что я начал писать когда биржа закрыта, для тестирования функции я перенес вызов в int OnInit() Не вопрос, при запуске советника отрабатывает.

Далее, начал просто добавлять импорт библиотек в файл PythonDLL_Example.py

Файл стал выглядеть так:

# You may obtain a copy of the License at
#
#     http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# https://github.com/Roffild/RoffildLibrary
# ==============================================================================

import pandas as pd

import numpy as np

import tensorflow as tf
from tensorflow import keras

import sys
tf.compat.v1.logging.set_verbosity(tf.compat.v1.logging.ERROR)

import os
os.environ['TF_CPP_MIN_LOG_LEVEL'] = '2'

class PythonDLL_Example():
    def getLong(self, magic: int, value: int, array: tuple) -> tuple or list:
        raise NotImplementedError

    def getULong(self, magic: int, value: int, array: tuple) -> tuple or list:
        raise NotImplementedError

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

    def getString(self, magic: int, value: str, array: bytes) -> str:
        if magic == 1:
            return value + str(sys.version)
        if magic == 2:
            return str(array) + " " + str(sys.version_info)
        if magic == 3:
            return "sys.path:\n" + "\n".join(sys.path) + \
                   "os.environ[\"PATH\"]:\n" + os.environ["PATH"].replace(";", "\n")
        raise Exception("This is not a bug! This is a feature :D")


__mql__ = PythonDLL_Example()

стало происходить следующее:

1. Вешаю советник, результат корректен. Вывод ниже. 


Корректно! Result is 251920 - это верный вывод!

2. Снимаю советник, вешаю повторно. Вывод ниже:



 3. На третий или четвертый раз вылетает советник.

Что это за проблема и как ее можно решить? Куда посмотреть?

Спасибо

 
  • Вызов pyFinalize() для освобождения памяти имеет смысл, но из-за бага в популярной библиотеке NumPy этого делать не стоит.  issue8097issue34309

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

Крашдампы могут накапливаться в папке c:\Users\ \AppData\Local\CrashDumps

Проблема в самом Питоне, вернее в отсутствии механизма оповещения внешних библиотек о завершении.

Crash when importing numpy from the Python C-API after calling Py_Finilize() · Issue #8097 · numpy/numpy
Crash when importing numpy from the Python C-API after calling Py_Finilize() · Issue #8097 · numpy/numpy
  • numpy
  • github.com
New issue Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community. Already on GitHub? Sign in to your account
 

ОК, большое спасибо. 

Буду работать с тем, что есть.

 

Рыдаю кровавыми слезами!

По одной строчке пытаюсь писать код функции.

Что было:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        return [x]

Значение x возвращается корректно! Result is 251920

Что добавил:

    def getDouble(self, magic: int, value: float, array: tuple) -> tuple or list:
        x = array[2] + array[1]
        df = pd.read_csv("RTSSplice.csv", usecols=['Low', 'Open', 'Close', 'High', 'Volume', 'Indicator1', 'Indicator2', 'Indicator3', 'Indicator4', 'Indicator5', 'Indicator6', 'Indicator7'], encoding='utf-16')
        return [x]

Значение x возвращается некорректно!  Result is 3.211426697968103e-322

Пробовал несколько раз добавлять-убирать строку! Добавленной строкой я просто читаю файл! Она никак не влияет на вычисление x! Библиотека pandas импортирована.

Почему система так себя ведет? Где искать проблему?

Спасибо! )

 
Дебажить код можно и в PyCharm. А еще можно print() в проблемных местах расставлять - это самый простой способ контроля значения переменных. Консоль можно активировать.
Причина обращения: