Изменение LD_LIBRARY_PATH во времени выполнения для ctypes

В моем приложении мне нужно получить час & amp; мин из чего-то и найдите его разницу во времени с текущим временем UTC.

Это не имеет смысла .

В компьютере время не равно часам и минутам. Время - это количество секунд с полуночи 1 января 1970 года. Любое другое представление о времени на компьютере - это всего лишь показуха. Мой компьютер знает, что с полуночи, 1 января 1970 года, прошло 1551 120 948 секунд. Поскольку он также понимает григорианский календарь и часовые пояса, он может отображать это для меня как «2019-02-25 13:55:48 -0500», но он все еще просто хранит общее количество секунд.

Поэтому, когда вы говорите, что хотите сравнить «текущее время UTC» (общее количество секунд с 1970-01-01 00:00:00 +0000) с «часами и мин», у меня нет Идея, что вы хотите.

Если вы рассмотрите ваш пример:

Например:

a = Time.parse('2015-12-31 02:00:00 +0100')
b = Time.parse('2015-11-31 22:00:00 +0100')
c = time_difference(a, b) / 3600

станет -676,0, а не 4

Почему бы разница будет 4 часа? Самый простой способ, которым я могу думать, чтобы избежать этих разных дат, - это построить новое время в одну и ту же дату:

b_norm = Time.new(a.year, a.month, a.day, b.hour, b.min, b.sec)
c = time_difference(a, b_norm) / 3600

Но это дает разницу во времени от 20 (2 утра до 10 вечера). Единственный способ сделать это с разницей в 4 часа - это если вы интерпретируете b как по сравнению с предыдущим днем ​​. Как вы знаете, как это сделать?

Ваш вопрос просто неполон, как написано, потому что в конкретный день должны существовать часы и минуты, чтобы иметь какой-либо смысл для выполнения вычислений.

36
задан Scott 13 May 2009 в 04:52
поделиться

2 ответа

К моменту запуска такой программы, как Python, динамический загрузчик (ld.so.1 или что-то подобное) уже прочитал LD_LIBRARY_PATH и после этого не заметит никаких изменений. Итак, если само программное обеспечение Python не оценивает LD_LIBRARY_PATH и не использует его для построения возможного пути к библиотеке для dlopen () или эквивалентной функции для использования, установка переменной в сценарии не будет иметь никакого эффекта.

Учитывая, что вы говорите, что это не работает, кажется правдоподобным предположить, что Python не создает и не пробует все возможные имена библиотек; вероятно, он полагается только на LD_LIBRARY_PATH.

41
ответ дан 27 November 2019 в 05:30
поделиться

CDLL может быть передан полный путь, поэтому, например, я использую следующее в одном из моих сценариев, где .so находится в том же каталоге, что и сценарий python.

import os
path = os.path.dirname(os.path.realpath(__file__))
dll = CDLL("%s/iface.so"%path)

В вашем случае следующего должно быть достаточно.

from ctypes import *
lib = CDLL("/home/starlon/Projects/pyCFA635/lib/libevaluator.so")
16
ответ дан 27 November 2019 в 05:30
поделиться
Другие вопросы по тегам:

Похожие вопросы: