Архив метки: Ubuntu

Пример ускорения python используя ctypes

Один из вариантов ускорить выполнение кода Python — переписать медленный метод на язык C, с помощью ctypes можно подключать библиотеки написанные на C.
Ниже пример вызова C-метода и сравнение производительности.

1) Пишем метод (файл myfib.c)

unsigned long fib(unsigned long x)
{
if(x < 2) return x;
return fib(x-1) + fib(x-2);
}

2) Компилируем:

gcc -shared -Wl,-soname,myfib.so -o myfib.so -fPIC myfib.c

3) Вызываем из Python и сравниваем с функцией написанной на чистом python:

import ctypes
import timeit

fib = ctypes.CDLL('./myfib.so').fib
fib.restype = ctypes.c_long
fib.argtypes = (ctypes.c_ulong,)

print timeit.timeit('fib(32)', 'from __main__ import fib', number=1)

def pyfib(x):
if x < 2: return x
return pyfib(x-1) + pyfib(x-2)

print timeit.timeit('pyfib(32)', 'from __main__ import pyfib', number=1)

Результат:

0.0463268756866
1.08009696007

В итоге, за счет использования ctypes, мы получили ускорение в 23 раза.

Если использовать оптимизацию при компиляции, то можно получить большую производительность, для этого нужно указать ключ оптимизации:

gcc -O3 -shared -Wl,-soname,myfib.so -o myfib.so -fPIC myfib.c

Варианты ключей оптимизации:
-O1 — Базовая оптимизация
-O2 — GCC выполняет почти все поддерживаемые оптимизации, эта опция уменьшает как время компиляции так и время выполнения сгенерированного кода.
-O3 — Более сильная оптимизация, включает -O2 + некоторые дополнительные опции.

С учетом оптимизации -O3, мы получили такой результат:

0.023335695266
1.08294892311

Это быстрее в 46 раз чем на чистом python.

Тестировалось на ubuntu 12.10, python 2.7

Автор: D1VER
Дата публикации: 2013-12-16T05:21:00.001-08:00

TP-LINK TL-WN821N (RTL8192CU) в Linux Mint 15 и Ubuntu 13.04.

Wi-Fi USB адаптер TP-LINK TL-WN821N, основан на чипе RTL8192CU, поддержка которого в ядро Linux добавлена начиная с версии 2.6.38, что в идеале означает, что нужно всего-лишь подключить его к USB порту и «из коробки» он мгновенно без перезагрузок и дополнительных настроек (кроме ввода пароля на доступ к Wi-Fi соединению) должен заработать. Но на деле оказалось что его поддержка в ядре реализована чертовски криво и лишь у немногих счастливчиков всё работает гладко. Симптомы больного: не подключается к wi-fi или подключается после нескольких попыток, но на несколько секунд, далее дисконнект, потеря пакетов или остаётся подключённым, но абсолютно не проявляет активности. «Счастливые обладатели» данного «свистка», вот уже несколько лет наводняют форумы вопросами о том, как его «завести», пишут багрепорты разработчикам ядра и различных дистрибутивов Linux, но пока всё безрезультатно и остаётся только использовать драйвер, который предлагает сама Realtek, для самостоятельной, ручной установки. НО, этот драйвер не установится на ядро Linux 3.8, которое является ядром по умолчанию в дистрибутивах Linux Mint 15 и Ubuntu 13.04. Решение, к счастью нашлось!) Это тот же драйвер от Realtek, только доработанный напильником для совместимости с ядром 3.8, упакованный в виде deb пакета и устанавливаемый в виде DKMS модуля ядра, то есть после обновления ядра, этот модуль автоматически пересобирается и после перезагрузки ПК, Wi-Fi не отваливается, как это происходит при установке оригинального драйвера от Realtek). Итак, преступим к установке (от root'а):

wget -P /tmp/ http://realtek-8188cus-wireless-drivers-3444749-ubuntu-1304.googlecode.com/files/rtl8192cu-tjp-dkms_1.6_all.deb && dpkg -i /tmp/rtl8192cu-tjp-dkms_1.6_all.deb

Пакет установлен, правильный модуль для ядра собран, осталось только деактивировать старый модуль и активировать новый, чтобы W-Fi заработал (от root'а):

modprobe -r rtl8192cu && modprobe 8192cu

В это же мгновение в трее должна активироваться беспроводная сеть. Ура, всё заработало! 🙂 Но остался ещё последний штрих — занести старый модуль в чёрный список, чтобы он больше не загружался вместе с системой и не мешал работе нового модуля (от root'а):

cd /etc/modprobe.d/ && nano blacklist.conf

 В самый конец файла добавляем:

# Zanosim v cherniy spisok ne rabotayushie moduli yadra dlay wi-fi adaptera na osnove rtl8192cu
blacklist rtl8192cu
blacklist rtl8192c_common
blacklist rtlwifi

Нажимаем CTRL+O, подтверждаем, и затем CTRL+X. ВСЁ, я вас поздравляю, Wi-Fi адаптер у вас теперь работает и после перезагрузки системы или обновления ядра не отвалится!)

P.S. Естественно, этот метод подходит не только для адаптера TP-LINK TL-WN821N, но и для любого другого на основе чипа RTL8192CU.

Автор: Yar4e

Xerox Phaser 6000 в Xubuntu 12.10

 Xerox Phaser 6000 прекрасно работает под Linux, но драйвера для него нужно установить отдельно, так как в комплектации «из коробки» они отсутствуют. На официальном сайте, есть пакеты с драйверами как для deb-based, так и для rpm-based дистрибутивов. Пример установки драйверов на дистрибутив Xubuntu 12.10:

cd /tmp/ && wget http://download.support.xerox.com/pub/drivers/6000/drivers/linux/en_GB/6000_6010_deb_1.01_20110210.zip && unzip 6000_6010_deb_1.01_20110210.zip && cd deb_1.01_20110210/ && sudo dpkg -i xerox-phaser-6000-6010_1.0-1_i386.deb

 Далее, остаётся установить принтер через веб-интерфейс CUPS или с помощью любой другой утилиты управления принтерами, используемой в вашем дистрибутиве Linux.

Автор: Yar4e

Новая версия почтового клиента Geary вышла

Недавно стало известно, что компания Yorba Foundation заявила об окончании разработки и начале выпуска нового небольшого почтового клиента — Geary версии 0.4. Дизайн и система взаимодействий были разработаны не без участия GTK 3+ (кроссплатформенной библиотеки). Вполне возможна и разработка мобильных приложений для принятия и отправки почты. Читать →

Ubuntu 13.10 может перейти с браузера Firefox на Chromium

В настоящий момент на Ubuntu Developer Summit решается судьба стандартного браузера, встроенного в ОС Ubuntu. Напомним, что на данный момент таковым является Firefox. Но есть очень большой шанс, что его заменят на Chromium. Уж слишком большая нынче поддержка у этого свободного браузера среди разработчиков системы. Читать →

ПРО ВИРУСЫ ДЛЯ LINUX


В первую очередь дам ответы на самые распространенные вопросы о вирусах в Linux и в Ubuntu в частности.

Вопрос 1. Существуют ли вирусы для Linux?
Ответ: Да, конечно, но их в несколько тысяч раз меньше чем под Windows и до сих пор ни один из них не получил массового распространения.

Вопрос 2. Могут ли вирусы для Windows заразить компьютер с Linux?
Ответ: Да, если в Linux установлен Wine, то, в принципе, в Linux могут работать вирусы для Windows, однако многие вирусы используют именно недокументированные системные вызовы Windows, которые очень плохо реализованы в Wine и поэтому риск заражения намного меньше. Далее, вирусы могут работать и в Windows , установленной на виртуальной машине, запущенной под управлением Linux. Кроме того, компьютеры с Linux могут быть пассивными носителями вирусных файлов, которые могут снова начать работать, после того как их, например, на флешке перенесут на компьютеры, работающие под управлением Windows. Читать →