User Tools

Site Tools


python

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
python [2015/01/01 13:46] – [Cython Tutorial] dongheepython [2018/07/18 14:10] (current) – external edit 127.0.0.1
Line 57: Line 57:
  
 Dockerfile Dockerfile
 +<code>
 FROM debian:sid FROM debian:sid
 MAINTAINER Donghee Park <dongheepark@gmail.com> MAINTAINER Donghee Park <dongheepark@gmail.com>
Line 74: Line 74:
  
  
 +</code>
  
 Makefile Makefile
  
 +<code>
 cython helloworld.pyx cython helloworld.pyx
 gcc -g -O2 -fpic `python-config --cflags` -c helloworld.c -o helloworld.o   gcc -g -O2 -fpic `python-config --cflags` -c helloworld.c -o helloworld.o  
 gcc -shared -o helloworld.so helloworld.o `python-config --libs` gcc -shared -o helloworld.so helloworld.o `python-config --libs`
  
-+</code>
  
 mycode.c mycode.c
  
-```+<code>
 #include <stdio.h> #include <stdio.h>
  
Line 93: Line 95:
  return a+b;  return a+b;
 } }
-```+</code>
  
 mycode.h mycode.h
  
-```+<code>
 #ifndef __MYCODE_H__ #ifndef __MYCODE_H__
 #define __MYCODE_H__ #define __MYCODE_H__
 extern int myfunc (int, int); extern int myfunc (int, int);
 #endif __MYCODE_H__ #endif __MYCODE_H__
-```+</code>
  
 mycodecpy.pyx mycodecpy.pyx
  
-```+<code>
 cdef extern from "mycode.h" cdef extern from "mycode.h"
  cdef int myfunc (int, int)  cdef int myfunc (int, int)
Line 112: Line 114:
 def callCfunc (): def callCfunc ():
  print myfunc (1,2)  print myfunc (1,2)
-``` +</code>
  
 +<code>
 cython mycodecpy.pyx cython mycodecpy.pyx
 gcc -g -O2 -fpic -c mycode.c -o mycode.o gcc -g -O2 -fpic -c mycode.c -o mycode.o
 gcc -g -O2 -fpic -c mycodecpy.c -o mycodecpy `python-config --cflags` gcc -g -O2 -fpic -c mycodecpy.c -o mycodecpy `python-config --cflags`
 gcc -shared -o mycodecpy.so mycode.o mycodecpy.o `python-config --libs`  gcc -shared -o mycodecpy.so mycode.o mycodecpy.o `python-config --libs` 
 +</code>
 +
 +----
 +===== xdress install =====
 +llvm 3.4.2 in macos x 10.9
 +
 +<code>
 +wget http://llvm.org/releases/3.4.2/clang+llvm-3.4.2-x86_64-apple-darwin10.9.xz
 +#wget http://llvm.org/releases/3.4.2/clang+llvm-3.4.2-x86_64-linux-gnu-ubuntu-14.04.xz
 +
 +tar xvfz clang+llvm-3.4.2-x86_64-apple-darwin10.9.xz
 +mv clang+llvm-3.4.2-x86_64-apple-darwin10.9 llvm-3.4.2-build
 +
 +export LLVM_CONFIG=llvm-3.4.2-build/bin/llvm-config
 +
 +git clone git://github.com/xdress/xdress.git
 +
 +cd xdress
 +
 +python setup.py build_ext --inplace
 +sudo python setup.py install
 +</code>
 +
  
  
 +<code>
 +xdress --debug -p clang
  
 +</code>
 ---- ----
 ===== xdress 사용하기 ===== ===== xdress 사용하기 =====
Line 129: Line 157:
  
 jehsrc/hoover.h jehsrc/hoover.h
-```+<code>
 #if !defined(HOOVER) #if !defined(HOOVER)
 #define HOOVER #define HOOVER
Line 139: Line 167:
 };}; };};
 #endif #endif
-```+</code>
 ---- ----
  
 jehsrc/hoover.cpp jehsrc/hoover.cpp
-```+ 
 +<code>
 #include "hoover.h" #include "hoover.h"
 double hoover::A::power(int n){ double hoover::A::power(int n){
   int i = 1;   int i = 1;
   double val = a;   double val = a;
-  while (i < n){val *= a;};+  while (i < n){val *= a; i++;};
     return val;     return val;
 }; };
-```+</code>
  
  
Line 157: Line 186:
  
 jeh_xdressrc.py jeh_xdressrc.py
-```+ 
 +<code>
 package = 'jedgar'      # top-level python package name package = 'jedgar'      # top-level python package name
 packagedir = 'jedgar'   # location of the python package packagedir = 'jedgar'   # location of the python package
Line 163: Line 193:
  
 classes = [('A', 'jehsrc/hoover.*')] classes = [('A', 'jehsrc/hoover.*')]
-```+</code>
  
-xdress --rc jeh_xdressrc.py +jeh_setup.py 
-python3 jeh_setup.py build /dev/null 2>&1+<code> 
 +import os 
 +from distutils.core import setup 
 +from distutils.extension import Extension 
 +from Cython.Distutils import build_ext
  
 +import numpy as np
 +
 +cwd = os.getcwd()
 +incdirs = [cwd, os.path.join(cwd, 'jehsrc'), np.get_include()]
 +
 +ext_modules = [
 +    Extension("jedgar.hoover", ['jehsrc/hoover.cpp', "jedgar/hoover.pyx", ],
 +    include_dirs=incdirs, language="c++")
 +    ]
 +
 +setup(  
 +  name = 'jedgar',
 +  cmdclass = {'build_ext': build_ext},
 +  ext_modules = ext_modules,
 +  packages = ['jedgar']
 +)
 +</code>
 +
 +Makefile
 +
 +<code>
 +all:
 +        xdress --rc jeh_xdressrc.py
 +        python jeh_setup.py build > /dev/null 2>&1
 +clean:
 +        rm -rf build
 +        rm -rf jehbuild
 +        
 +</code>
  
 ---- ----
 Hoover Example Hoover Example
  
-```+<code>
 from jedgar.hoover import A from jedgar.hoover import A
  
Line 178: Line 241:
 a.a = 10 a.a = 10
 a.power(42) a.power(42)
-``` +</code>
python.1420119995.txt.gz · Last modified: 2018/07/18 14:09 (external edit)