我正在检查编译python脚本后我获得了多少性能提升。在研究这个问题后,我认为我实际上并没有看到我编写的脚本性能的提高,因为我发现一旦加载了脚本,执行时间就不会增加。我仍然想知道为什么这在编译后无法运行,因为这是我第一次尝试这个。这是我的剧本
#!/bin/python3
from datetime import datetime
start = datetime.now()
import psutil
BYTES_PER_GB = 1024*1024*1024
# Memory
m = psutil.virtual_memory()
#total = m.total/BYTES_PER_GB
#available = m.available/BYTES_PER_GB
#used = m.used/BYTES_PER_GB
m_free= m.free/BYTES_PER_GB
m_percent = m.percent
# Swap
s = psutil.swap_memory()
s_free = s.free/BYTES_PER_GB
s_percent = s.percent
print(' %.1fG (%.1f%%) %.1fG (%.1f%%)' % (m_free, m_percent, s_free, s_percent))
print(' %.1fG (%.1f%%) %.1fG (%.1f%%)' % (m_free, m_percent, s_free, s_percent))
print(datetime.now() - start)
我正在尝试使用此行进行编译
python3 -m py_compile memory
在我的print语句中,我有一些来自字体awesome的特殊字符。不确定这是否会导致问题,但如果它在我的帖子中没有正确显示那么那就是那个。
我尝试运行编译文件时的输出是
./memorycpython-35.pyc: line 1: $'\026\r\r': command not found
./memorycpython-35.pyc: line 2: �k�W��@s�ddlmZej�ZddlZdZej�Zejeej: command not found
./memorycpython-35.pyc: line 3: syntax error near unexpected token `)'
./memorycpython-35.pyc: line 3: `ej
�Z
e
e je
j Ze�eej�e�dS)�)datetimeNiii@)rZnow�startZpsutilZ
BYTES_PER_GBZvirtual_memory�mZfreeZm_freeZpercentZ m_percentZ
swap_memory�sZs_freeZ s_percent�print�rr�memory<module>s
'
^[[?62;c^[[?62;c
修改
为了缩小问题,我编写了以下脚本
#!/bin/python3
print("Hello World!")
这是输出
./testcpython-35.pyc: line 1: $'\026\r\r': command not found
./testcpython-35.pyc: line 2: syntax error near unexpected token `)'
./testcpython-35.pyc: line 2: `�r�W%�@sed�dS)z
Hello World!N)�print�rr�./test<module>s'
使用
编译python3 -m py_compile ./test
这会在__pycache__/
中创建一个名为testcpython-35.pyc
的文件,然后我会chmod +x testcpython-35.pyc
和./testcpython-35.pyc
答案 0 :(得分:1)
看来我的问题是./testcpython-35.pyc
部分。当我运行python3 testcpython-35.pyc
时,独立于我是否chmod +x ./testcpython-35.pyc
,输出被拼写错误。只要我通过首先使用python3
指定运行它的程序来运行已编译的程序,它就会按预期输出Hello World!
。