python技巧分享(十七)

2019-01-05 LEo 更多博文 » 博客 » GitHub »

原文链接 http://reborncodinglife.com/2019/01/05/python-tricks-17/
注:以下为加速网络访问所做的原文缓存,经过重新格式化,可能存在格式方面的问题,或偶有遗漏信息,请以原文为准。


这是一个系列文章,主要分享python的使用建议和技巧,每次分享3点,希望你能有所收获。

1 获取文件绝对路径

#!/usr/bin/python
# coding=utf-8

import os

absolute_path = os.path.realpath(__file__)
print absolute_path

运行示例代码输出如下:

$ ./python-tips-17.py
/git/python_practice/demo/python-tips-17.py

由示例中可以看到,输出文件的绝对路径。

2 修改进程名字

#!/usr/bin/python
# coding=utf-8

import time
import setproctitle
import multiprocessing


def test_process():
    p = multiprocessing.current_process()
    setproctitle.setproctitle(p.name)
    print 'starting process name <{}>, pid <{}>'.format(p.name, p.pid)
    time.sleep(100)


if __name__ == '__main__':
    p = multiprocessing.Process(
        name='test_process',
        target=test_process,
    )
    p.daemon = False
    p.start()
    time.sleep(100)

运行示例代码输出如下:

$ ./python-tips-17.py
starting process name <test_process>, pid <4281>

在另外一个终端查看进程名为test_process,如下:

$ ps -ef | grep [4]281
root      4281  4280  0 17:04 pts/20   00:00:00 test_process

如果注释掉setproctitle.setproctitle(p.name),运行示例如下:

$ ./python-tips-17.py
starting process name <test_process>, pid <4700>

在另一个终端查看进程名字,可以看到进程名字是/usr/bin/python ./python-tips-17.py,而不是设置的test_process。

$ ps -ef | grep [4]700
root      4700  4699  0 17:06 pts/20   00:00:00 /usr/bin/python ./python-tips-17.py

即通过setproctitle.setproctitle(p.name)实现了修改python进程的名字。

3 多行字符串写法

#!/usr/bin/python
# coding=utf-8

long_str = ('this is a '
            'very long '
            'string')

print long_str

运行示例代码输出如下:

$ ./python-tips-17.py
this is a very long string

pep8建议代码长度不超过79个字符,如果需要写一个长字符串,往往会超过79个字符。由示例中可以看到,通过该方式可以实现长字符串的书写,并且不违反pep8。