我正在研究 mandelbrot 算法来学习 Rust,我发现空的 25mil(大约 6k 图像)循环需要 0.5 秒。我发现它很慢。于是我去用python测试了一下,发现几乎花费了同样的时间。python的for循环真的是几乎零成本的抽象吗?这真的是我能用英特尔 i7 得到的最好的结果吗?
锈:
use std::time::Instant;
fn main() {
let before = Instant::now();
for i in 0..5000 {
for j in 0..5000 {}
}
println!("Elapsed time: {:.2?}", before.elapsed());
}
>>> Elapsed time: 406.90ms
Run Code Online (Sandbox Code Playgroud)
Python:
import time
s = time.time()
for i in range(5000):
for j in range(5000):
pass
print(time.time()-s)
>>> 0.5715351104736328
Run Code Online (Sandbox Code Playgroud)
更新:如果我使用初始化的元组而不是范围,python 甚至比 rust 更快 -> 0.33s
我有一个小问题exec().我有来自Kivy GUI的字符串,我需要执行并存储执行代码中的值.
class gui(BoxLayout):
def proces(self):
t = threading.Thread(target=self.graf)
t.daemon = True
t.start()
def graph(self):
CodeInput=self.ids.codas
Code=CodeInput.text
x, y = [], []
exec(Code)
print(x,y) # empty list prints
# then x y will serve for plotting a graph
Run Code Online (Sandbox Code Playgroud)
这是'Code'中的一个字符串:
def values():
x=np.linspace(0,3.14,100)
y=np.sin(x)
print(x) # of course works
return x,y
x,y=values()
Run Code Online (Sandbox Code Playgroud)
一切都工作,除了我不能从exec(代码)获取值x,y.它像exec()是完全独立的操作,可以启动但无法输入.
kivy 是否支持在 mouse_pos 更改时触发的 MouseEvent 无需按下鼠标按钮?
我在文档中发现:
Run Code Online (Sandbox Code Playgroud)def on_motion(self, etype, motionevent): # will receive all motion events. pass Window.bind(on_motion=on_motion)您还可以通过观察 mouse_pos 来监听鼠标位置的变化。
但是我无法实现它。我设法绑定它并添加到 on_motion 函数 'print('Hello world')' 但它仅由按下类型事件触发。
提前致谢
我有raspberri pi 零 WH,它只有1 个 Core。
我有一个循环运行的程序,侦听传入的 UDP 数据包并处理它们。对我来说至关重要的是,数据包和进一步的逻辑在 0.025 秒内处理(更清楚地说,存在永恒循环(即使没有数据包到来),无论发生什么,循环都不能超过 0.025 秒)。
如果我从终端运行我的程序,我会相当成功
sudo python3 script.py
Run Code Online (Sandbox Code Playgroud)
但是,如果我使用systemd作为服务运行它,则该程序似乎没有占用足够的资源。循环未达到 0.025 秒条件。另外,从 htop 看来,将我的程序作为服务运行可以减少一个线程(我不能保证这一事实,只是快速观察)。
我没有使用systemd 服务的经验,所以问题可能出在我的配置上
[Unit]
Description=App
[Service]
ExecStart=sudo /usr/bin/python3 /home/pi/script.py
WorkingDirectory=/home/pi/
Restart=always
User=pi
[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)
我的问题是,这个标准行为或 systemd 服务的行为应该与从终端运行的程序相同吗?