我正在尝试制作一个iOS应用程序,该应用程序将根据用户的需求将pi计算为小数点后一组。我目前有一个python脚本,它将从用户那里获取一个整数值,然后将其用于Pi的计算中。我也有一个swift / Xcode项目,该项目仅允许用户输入一个整数值。所以我想知道是否有一种方法可以传递用户从我的swift项目中的文本框中输入的值,然后将该值提供给python代码,运行它,然后输出结果?在我的python代码中,我正在使用“计时器”来计算将pi计算为所请求的设置数字所花费的时间。因此,我只需要能够显示此结果。
我曾考虑过迅速重写python脚本,但是我不确定如何做到这一点。这是我在python脚本中用于计算pi的定义:
fn gen(sequence: &mut Vec<usize>, a: &mut [usize], t: usize, p: usize, k: usize, n: usize) {
if t > n {
if n % p == 0 {
for x in 1..(p + 1) {
sequence.push(a[x])
}
}
} else {
a[t] = a[t - p];
gen(sequence, a, t + 1, p, k, n);
for x in (a[t - p] + 1)..k {
a[t] = x;
gen(sequence, a, t + 1, t, k, n);
}
}
}
fn de_bruijn<T: Clone>(alphabet: &[T], n: usize) -> Vec<T> {
let k = alphabet.len();
let mut a = vec![0; n + 1];
let vecsize = k.checked_pow(n as u32).unwrap();
let mut sequence = Vec::with_capacity(vecsize);
gen(&mut sequence, &mut a, 1, 1, k, n);
sequence.into_iter().map(|x| alphabet[x].clone()).collect()
}
但是我不确定如何将其重写为swift语言,因此我想让swift将precision值传递给python会更容易。
答案 0 :(得分:0)
您肯定可以在Swift中运行Python代码,因为Python被设计为嵌入式且具有C接口API。检查Swift for TensorFlow如何使用Python互操作性(尽管我找不到仅使用该模块而不是整个TensorFlow的快速方法)。您也可以检出PythonKit。
但是,我认为重写该脚本不会太困难,最好避免在项目中使用更多的库和依赖项。
编辑:正如Joakim Danielson指出的那样,您将需要Python运行时,并且它似乎在iOS中不可用,因此您似乎仅限于macOS。